在nodejs中未定义函数错误。我的代码有什么问题?

时间:2020-04-14 18:05:45

标签: node.js function module defined

我创建了两个文件app.js和helpers.js,当我尝试从app.js调用函数时,出现错误,未定义函数。

这两个文件位于同一文件夹中。我认为module.exports关键字有问题,

有人可以在这里帮助我吗?这是两个单独文件的代码:

//app.js

const helpers= require('./helpers');


const total= sum(10,20);
console.log("total:",total);

//helpers.js

const sum = (a,b)=>{
	return a+b;
}

module.exports={
	sum
};

我得到的错误是:

const total= sum(10,20);
             ^

ReferenceError: sum is not defined
    at Object.<anonymous> (E:\testing\app.js:5:14)
    at Module._compile (internal/modules/cjs/loader.js:1147:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1167:10)
    at Module.load (internal/modules/cjs/loader.js:996:32)
    at Function.Module._load (internal/modules/cjs/loader.js:896:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47

4 个答案:

答案 0 :(得分:1)

尝试这种方式:

   //app.js

const helpers= require('./helpers');


const total= helpers.sum(10,20);
console.log("total:",total);

//helpers.js

const sum = (a,b)=> {
    return a+b;
}

module.exports = sum;

答案 1 :(得分:1)

问题是您要在对象中的sum中导出函数helpers.js

// helpers.js

// ...

module.exports = {
    sum
};

如果您想从app.js访问它,则可以使用helpers.sum(...)来访问它:

// app.js

const helpers = require('./helpers');


const total = helpers.sum(10, 20);
console.log("total:", total);

...,或者您可以在require行中使用对象解构:

// app.js

const { sum } = require('./helpers');

// ...

更新

当然,您发布的答案确实有用,但是使用helpers.js这个名称,我认为您可能希望将多个辅助函数放入该文件中。然后,您必须使用对象导出-如上所述-才能导出所有助手功能。

答案 2 :(得分:0)

您可以尝试编辑将sum函数导出到以下方式:

module.exports = sum;

那是因为在定义时:

module.exports = {...}

这意味着您要导出的是对象,而不是函数。

用法:

const sum= require('./helpers');

const total= sum(10,20);
console.log("total:",total);

答案 3 :(得分:0)

最后,我找到了答案。

我只需要在 app.js 第一行中用 sum 关键字替换 helpers 关键字,并且还删除了花括号根据其他人的建议,在 helpers.js 中的 sum 左右。

正确的代码在下面

//app.js

const sum= require('./helpers');
const total= sum(10,20);

console.log("total:",total);

//helpers.js

const sum = (a,b)=>{
return a+b;
}
module.exports=sum;