Express API开发报错:如何解决模块无default导出的SyntaxError?
解决ES模块导入导出不匹配的错误
错误原因
你在pedidos.mjs中使用了命名导出(export const pedidosRoutes = router),但在index.mjs中用了默认导入(import pedidosRoutes from './routes/pedidos.mjs'),两者不匹配导致报错。
解决方案(二选一即可)
方案1:将pedidos.mjs改为默认导出
修改pedidos.mjs的导出语句,把命名导出改成默认导出:
import { Router } from "express"; import { ACCEPTED_ORIGINS } from "../middlewares/cors.mjs"; const router = Router() export default router // 改为默认导出 router.get('/', (req, res) => { return res.json({ "id": "1" }) })
或者保留pedidosRoutes变量,将其作为默认值导出:
// ... 其他代码不变 export default pedidosRoutes
方案2:将index.mjs改为命名导入
保持pedidos.mjs不变,修改index.mjs的导入语句,使用命名导入(用大括号包裹变量名):
import express from 'express' import { pedidosRoutes } from './routes/pedidos.mjs' // 添加大括号 // ... 其他代码
额外需要修正的问题
index.mjs中app.use(json())会报错,因为json方法属于express模块,需要改为:
app.use(express.json())
- 路由挂载路径缺少开头的斜杠,
app.use('pedidos', pedidosRoutes)应改为:
app.use('/pedidos', pedidosRoutes)
否则访问路由时会出现路径拼接错误。
内容的提问来源于stack exchange,提问作者Dozom
相关产品推荐
相关产品推荐

