在Node.js中调用导出函数

时间:2014-03-22 15:06:07

标签: node.js referenceerror

我是node.js的新手

我确实试过这个函数(foo.js)

module.exports.hello = function hello(name) {
 console.log("hello " + name);   
}

hello('jack');

但我有这个错误

node foo.js
ReferenceError: hello is not defined

3 个答案:

答案 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');

应该给予SqlLOCALDb_edited.png信用,因为在我首先找到这个问题后我找到了答案。

答案 2 :(得分:-1)

我认为这是一个JavaScript错误,而不是node.js错误

module.exports.hello = function hello(name)

在我看来你正在尝试定义一个函数,但js中的函数def采用2种形式,一种是使用函数文字,如:

var x = function () {}

而另一个是

function x () {}

你似乎正在混合使用