Node.js跨文件函数导入失败:导出与导入方式不匹配问题排查
问题排查与解决
核心问题有两个:
- 导出语法错误:你用了逗号表达式
module.exports = run, inserirDatabase, readDatabase, deleteOneOnDatabase,这种写法只会把最后一个deleteOneOnDatabase赋值给module.exports,其他函数根本没被导出。 - 模块系统不兼容:你用CommonJS的
module.exports导出,却用ES模块的import语法导入,Node.js默认不会自动兼容这两种写法。
解决方案选其一即可:
方案1:统一用CommonJS模块(require导入)
修改导出文件的最后一行,把所有函数放进一个对象:
module.exports = { run, inserirDatabase, readDatabase, deleteOneOnDatabase };
然后导入时改用require:
const { run, inserirDatabase, readDatabase, deleteOneOnDatabase } = require('../database/database.js');
方案2:统一用ES模块(import/export)
- 在项目根目录的
package.json中添加"type": "module",告诉Node.js这是ES模块项目:
{ "type": "module" }
- 修改导出文件的最后一行,用ES模块的命名导出:
export { run, inserirDatabase, readDatabase, deleteOneOnDatabase };
你的导入代码可以保持不变:
import { run, inserirDatabase, readDatabase, deleteOneOnDatabase } from '../database/database.js';
内容的提问来源于stack exchange,提问作者G4rutti
相关产品推荐
相关产品推荐

