导入Node路由时Node.js服务崩溃,求问题排查方法
Node.js ESM 路由模块导入崩溃排查方案
问题场景
导入路由模块时服务崩溃,移除路由后服务正常运行,已确认路径但问题依旧。核心代码如下:
import express from "express"; import cors from "cors"; import verifyRouter from "./routes/jwtauth"; const app = express(); const port = 4500; // Middleware app.use(cors()); app.use(express.json()); app.use("/auth", verifyRouter); app.listen(port, () => { console.log(`Server is running at http://localhost:${port}`); });
报错信息:
Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'C:\Users\DELL\Desktop\myproject\server\routes\jwtauth' imported from C:\Users\DELL\Desktop\myproject\server\index.js Did you mean to import ../routes/jwtauth.js? at new NodeError (node:internal/errors:405:5) at finalizeResolution (node:internal/modules/esm/resolve:327:11) at moduleResolve (node:internal/modules/esm/resolve:946:10) at defaultResolve (node:internal/modules/esm/resolve:1132:11) at nextResolve (node:internal/modules/esm/loader:163:28) at ESMLoader.resolve (node:internal/modules/esm/loader:835:30) at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18) at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:77:40) at link (node:internal/modules/esm/module_job:76:36) { code: 'ERR_MODULE_NOT_FOUND' } Node.js v18.18.2 [nodemon] app crashed - waiting for file changes before starting...
排查与解决步骤
- 补全文件扩展名:Node.js ESM模式下必须指定完整文件扩展名,不能省略
.js。修改导入语句为:import verifyRouter from "./routes/jwtauth.js"; - 核对文件实际状态:
- 确认
server/routes目录下存在jwtauth.js文件,检查文件名拼写、大小写(Windows系统虽不区分,但ESM解析可能严格匹配) - 排除文件扩展名错误(如误命名为
.jsx/.ts等)
- 确认
- 确认ESM模式配置:在项目根目录的
package.json中添加"type": "module",确保Node.js将文件当作ESM模块处理:{ "type": "module" } - 验证相对路径逻辑:确认
index.js位于server/目录下,./routes/jwtauth.js对应路径为server/routes/jwtauth.js,与报错中缺失扩展名的路径一致 - 检查nodemon配置:若使用nodemon,确保其未忽略
routes目录文件,无路径解析相关异常配置
内容的提问来源于stack exchange,提问作者Oguogho
相关产品推荐
相关产品推荐

