无法在nodejs的另一个文件中导出模块



我试图在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(); 

最新更新