我为我的项目创建了一个helper.js文件。里面它包含许多功能,我在下面粘贴了一个功能。我使用module.exports导出此函数。
function generateInternalError(message, stack_trace) {
if (process.env.NODE_ENV == 'dev') {
console.log({ message: message, stack_trace: stack_trace });
} else {
console.log({message: message});
}
}
module.exports = {
generateInternalError: generateInternalError
};
我想要使用此功能,我会打电话:
helper.generateInternalError('Not Found',new Error().stack);
它按预期工作。
但是,我的任务是创建功能类别。基本上我需要以下内容:
helper.errors.generateInternalError('Not Found',new Error().stack);
我似乎无法找到在NodeJS中导出一类函数或函数对象的正确方法,这样我就不会收到如下错误:
TypeError: helper.errors.generateClientError is not a function
感谢任何帮助。
谢谢
答案 0 :(得分:4)
文件的module.exports
属性只是将名称映射到函数的对象。您可以任意定义它,例如:
module.exports = {
errors: {
generateInternalError,
...
},
...
};
然后,将定义require('./helper').errors.generateInternalError
。
答案 1 :(得分:1)
helpers
就是噪音,所以放弃它。只需使用常规模块,除非您确定在该类别中只有一个函数导出多个函数。如果您只使用module.exports导出一个函数,那么您不需要将其作为对象的属性来执行,这也意味着您可以只说const genError=require('./errors')
不要像helpers.errors.someErrorFunc
这样做,因为助手是噪音,而你只使用单独的模块文件制作类别。不要试图让Node.js看起来像Java或同样可怕的东西。
答案 2 :(得分:0)
将助手子类构建在单独的文件中可能会更好。
的src / helpers.js SRC /助理/ SRC /助手/ errors.js
档案 helpers.js
module.exports = {
errors: require('./helpers/errors')
}
档案 helpers / errors.js
module.exports = {
generateInternalError: function(){
//write some internal error code here
}
};
像这样构建代码将使您的根帮助程序文件非常有条理,并创建一个易于为新子类复制的模式。
如果你更喜欢模块化程度较低的方法,你可以简单地返回一个大的JSON对象,就像其他人已经证明的那样......
module.exports = {
errors: {
generateInternalError: function(){
//internal error code
},
generateDatabaseError: function(){
//db error code
}
}
}