Node.js启用"type": "module"后无法导入文件的问题求助
Node.js ES模块导入错误的解决方案
你的代码存在两个不符合ES模块规范的问题,导致了模块找不到的错误:
- 导入时未添加文件扩展名
ES模块("type": "module"模式)要求导入相对路径的文件时,必须显式指定文件扩展名(比如.js)。修改index.js中的导入语句:
import express from 'express'; // 添加 .js 扩展名 import tourRouter from './routes/tourRoutes.js'; const app = express(); app.use(express.json()); app.use('/api/v1/tours', tourRouter);
- 使用了CommonJS的导出语法
在ES模块中,不能使用module.exports导出内容,需要替换为ES模块的导出语法。修改tourRoutes.js的最后一行:
import express from 'express'; import fs from 'fs'; const tours = JSON.parse(fs.readFileSync(`../dev-data/data/tours-simple.json`)); const getAllTours = (req, res) => { res.status(200).json({ status: 'success', results: tours.length, data: { tours }, }); }; const router = express.Router(); router.route('/').get(getAllTours); // 替换为ES模块导出 export default router;
完成以上修改后,模块导入的问题就能解决了。
内容的提问来源于stack exchange,提问作者Don199
相关产品推荐
相关产品推荐

