Javascript Node.JS module.exports用于在两个函数之间传递参数?
我是Node.js新手,所以这可能是一个基本问题,我遗漏了一些显而易见的东西。在下面的代码中,我试图从foo设置sql_文件名,但由于变量不起作用,我不断在不存在的文件上得到一个错误。如果我在sql_util.js中硬编码文件名,它可以正常工作 那么,如何将一个参数或任何对象从一个js文件传递到另一个js文件的函数中呢 foo.jsJavascript Node.JS module.exports用于在两个函数之间传递参数?,javascript,node.js,Javascript,Node.js,我是Node.js新手,所以这可能是一个基本问题,我遗漏了一些显而易见的东西。在下面的代码中,我试图从foo设置sql_文件名,但由于变量不起作用,我不断在不存在的文件上得到一个错误。如果我在sql_util.js中硬编码文件名,它可以正常工作 那么,如何将一个参数或任何对象从一个js文件传递到另一个js文件的函数中呢 foo.js var misc = require('./sql_get'); console.log(misc.sql_file("on.sql")); fs = requi
var misc = require('./sql_get');
console.log(misc.sql_file("on.sql"));
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;
var misc = require('./sql_get');
console.log(misc.sql_file("on.sql"));
fs = require('fs');
file = 'on.sql'
var misc = require('./sql_get');
misc.sql_file('on.sql', function (err, contents) {
console.log(contents);
});
sql_util.js
var misc = require('./sql_get');
console.log(misc.sql_file("on.sql"));
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;
var misc = require('./sql_get');
console.log(misc.sql_file("on.sql"));
fs = require('fs');
file = 'on.sql'
var misc = require('./sql_get');
misc.sql_file('on.sql', function (err, contents) {
console.log(contents);
});
有几个问题:
var misc = require('./sql_util');
module.exports.sql\u fil=sql\u文件代码>(请参阅缺少的e
)。你可能是说
module.exports.sql_file = sql_file;
misc.sql_file("on.sql", function(err, fileContent) {
if(err) return console.log(err);
console.log('File content: ', fileContent);
});
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());
});
}
我不知道您在该文件中调用sql_文件函数时在做什么。删除它。让我们逐行检查一下,因为我看到很多错误,包括语法和语义 foo.js
var misc = require('./sql_get');
console.log(misc.sql_file("on.sql"));
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;
var misc = require('./sql_get');
console.log(misc.sql_file("on.sql"));
fs = require('fs');
file = 'on.sql'
var misc = require('./sql_get');
misc.sql_file('on.sql', function (err, contents) {
console.log(contents);
});
您在下面的函数sql\u file
中定义为异步,因此它不返回值,而是接受一个回调,并将结果传递给该回调
sql_util.js
var misc = require('./sql_get');
console.log(misc.sql_file("on.sql"));
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;
var misc = require('./sql_get');
console.log(misc.sql_file("on.sql"));
fs = require('fs');
file = 'on.sql'
var misc = require('./sql_get');
misc.sql_file('on.sql', function (err, contents) {
console.log(contents);
});
您有一个未使用的模块全局变量文件
。去掉这个。这会引起混乱
function sql_file(cb) {
var fileName = "./SQLs/" + sql_file;
sql\u文件
是一个函数。我可以说,因为这段代码存在于一个名为sql\u file
的函数中。因此,文件名将是“/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\u文件
导出为sql\u文件
,缺少字母e
解决方案
因为您所问的是参数传递,并且您只有一个函数,所以让我们简化它。您永远不想使用全局变量。如果函数需要一个特定的变量,只需将其作为参数传递即可
foo.js
var misc = require('./sql_get');
console.log(misc.sql_file("on.sql"));
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;
var misc = require('./sql_get');
console.log(misc.sql_file("on.sql"));
fs = require('fs');
file = 'on.sql'
var misc = require('./sql_get');
misc.sql_file('on.sql', function (err, contents) {
console.log(contents);
});
sql\u get.js(注意文件已重命名)
变量/属性名周围的*是怎么回事?假设是粗体的。感谢这段代码充满了打字错误、未定义的变量引用和错误的文件名。我建议先清理代码,看看它是否有效,然后再担心参数传递。就像我说的,我是新手,所以我感谢反馈,谢谢!我想将调用放回var reader=connection.reader(“SELECT*FROM ON”,[]),以保持代码整洁,使其看起来像connection.reader(sql_文件(“ON.sql”))。阅读原始sql文件并使用sql文件中的选择权。Brandon,我来自一个Visual Basic世界,它就是这样一个学习曲线,我一直在阅读Node.ja,这很好,但有点过头了。今天我有Sams学习Node.Js。实际上,这是你指出的我需要关注的基本面。我现在只在js工作了大约一周,所以你的反馈非常好,谢谢你抽出时间!如果你能推荐其他好的文学作品或练习,我将不胜感激。。谢谢你。特别是JavaScript和node.js是单线程的,扩展并发性的诀窍是使用回调进行异步I/O。我建议研究回调,因为在VB中可能没有接触过回调。