我试图在nodejs中创建一些虚拟函数并试图将其导出到另一个文件中,但当我使用node index.js
运行它时,它可能会出现一些愚蠢的错误,但它显示的错误是:
TypeError: spr.comb is not a function
下面是我的代码:
spread.js
const comb = () => {
const arr = [4,5,6];
const newArr = [1,2,3,...arr];
console.log(newArr);
}
module.exports = comb;
index.js
const spr = require('./spread');
spr.comb();
谁来告诉我哪里做错了。
问题是您已经完全覆盖了module.exports
对象。
module.exports
为空对象,用于添加要从模块导出的值。
在您的示例中,您已将module.exports
重新分配给comb
功能。所以,要调用这个函数,修改
spr.comb();
spr();
要使spr.comb()
工作,需要导出comb
函数,如下所示:
module.exports.comb = comb;
或
exports.comb = { ... }
你可以这样做(在spread.js中):
const comb = module.exports.comb = () => {
const arr = [4, 5, 6];
const newArr = [1, 2, 3, ...arr];
console.log(newArr);
}
这里不能使用用户自定义的名称,因为您已经从扩展文件导出了梳子
const spr = require('./spread');
spr.comb();
用这个代替
const comb = require('./spread');
如果您想使用自定义名称,您需要像这样修改您的扩展文件
module.exports = () => {
const arr = [4,5,6];
const newArr = [1,2,3,...arr];
console.log(newArr);
}
现在你正在从spread导出一个函数,当你在index.js中导入/包含它时,你可以为这个函数提供一个自定义的名字。
const {custom name comes here}= require('./spread');
例如
const comb = require('./spread');
const myCombFn = require('./spread');
如果该函数不是默认导出,则需要在主文件中用花括号将其括起来,如下所示:
const {spr} = require('./spread');
spr.comb();