我是Node.js的新手,所以这可能是一个基本问题,并且我缺少明显的东西。在下面的代码中,我试图从foo设置sql_file名称,但是由于变量不起作用,我不断收到文件不存在的错误。如果我在sql_util.js中对文件名进行硬编码,则可以正常工作。
那么如何将一个js文件中的参数或任何对象传递给另一个js函数呢?
foo.js
var misc = require('./sql_get');
console.log(misc.sql_file("on.sql"));
sql_util.js
fs = require('fs');
file = 'on.sql'
function sql_file(cb) {
var fileName = "./SQLs/" + sql_file;
fs.readFile(fileName, function(err, buffer) {
if (err) return cb(err);
return cb(null, buffer.toString());
});
}
sql_file(function(err, sqlstatement) {
if (err) throw err;
console.log('sql statement is: ' + sqlstatement);
});
};
module.exports.x = x;
module.exports.sql_fil = sql_file;
让我们逐行进行此过程,因为我看到了很多错误,包括语法和语义上的错误。
foo.js
var misc = require('./sql_get');
console.log(misc.sql_file("on.sql"));
您在下面的函数中将其定义sql_file
为异步的,因此它不返回值,而是接受将结果传递到的回调。
sql_util.js
fs = require('fs');
file = 'on.sql'
您有一个未使用的module-global变量file
。删除它。这会引起混乱。
function sql_file(cb) {
var fileName = "./SQLs/" + sql_file;
sql_file
是一个功能。我知道,因为此代码存在于一个名为的函数中sql_file
。因此,fileName将是“ ./SQLs/”+.toString()
函数的结果,函数的结果即为函数。我想也许您想要一个参数?
fs.readFile(fileName, function(err, buffer) {
if (err) return cb(err);
return cb(null, buffer.toString());
});
}
好像还可以
sql_file(function(err, sqlstatement) {
if (err) throw err;
console.log('sql statement is: ' + sqlstatement);
});
};
我不确定您要在这里做什么。为什么调用该函数?
module.exports.x = x;
module.exports.sql_fil = sql_file;
这两条线都有问题。没有定义名为的符号x
。我很惊讶这段代码运行时没有在该行上引发错误。其次,您要导出sql_file
为sql_fil
,缺少字母e。
解决方案
由于您所询问的只是参数传递,而您只有一个功能,因此让我们简化一下。您永远都不想使用全局变量。如果函数需要特定的变量,只需将其作为参数传递。
foo.js
var misc = require('./sql_get');
misc.sql_file('on.sql', function (err, contents) {
console.log(contents);
});
sql_get.js(注意文件已重命名)
var fs = require('fs');
function sql_file(sqlFilename, cb) {
var fileName = "./SQLs/" + sqlFilename;
fs.readFile(fileName, function(err, buffer) {
if (err) return cb(err);
return cb(null, buffer.toString());
});
}
module.exports.sql_file = sql_file;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句