我是node.js的新手
我确实试过这个函数(foo.js)
module.exports.hello = function hello(name) {
console.log("hello " + name);
}
hello('jack');
但我有这个错误
node foo.js
ReferenceError: hello is not defined
答案 0 :(得分:5)
在module.exports
上创建一个函数并不会使该函数全局可用,但它会在从另一个文件中请求您的文件时返回的对象上使用它。
因此,如果我们从你的foo.js文件中删除对hello的调用:
module.exports.hello = function hello(name) {
console.log("hello " + name);
}
并在同一目录中创建另一个名为bar.js的文件:
var foo = require('./foo');
foo.hello('jack');
然后我们得到所需的输出:
tim [ ~/code/node-test ]$ node bar
hello jack
tim [ ~/code/node-test ]$
编辑:或者,如果您只想定义一个在该文件中使用的函数,您可以在顶层定义一个常规函数,如下所示:
function hello(name) {
console.log("hello " + name);
}
module.exports.hello = hello;
hello('jack');
请注意,通过将其添加到module.exports
,我们仍然可以使用bar.js中的函数,但如果您不需要此功能,则可以省略此行。
答案 1 :(得分:3)
如果您真的想要坚持上面定义的格式,可以致电:
module.exports.hello = function hello(name) {
console.log("hello " + name);
}
module.exports.hello('jack');
或更简洁的最后一行:
exports.hello('jack');
答案 2 :(得分:-1)
我认为这是一个JavaScript错误,而不是node.js错误
module.exports.hello = function hello(name)
在我看来你正在尝试定义一个函数,但js中的函数def采用2种形式,一种是使用函数文字,如:
var x = function () {}
而另一个是
function x () {}
你似乎正在混合使用