nanoexpress拆分路由目录时报ERR_PACKAGE_PATH_NOT_EXPORTED错误如何解决
问题原因
- 你使用的
nanoexpress新版本在package.json的exports字段中没有暴露./cjs子路径,Node.js的模块解析规则会禁止访问未声明的包子路径,直接触发ERR_PACKAGE_PATH_NOT_EXPORTED报错。 - 路由文件写法存在两处错误:不需要在路由中重复实例化
nanoexpress应用,导出路由的格式和入口文件的app.use调用逻辑不匹配。 - 你路由目录下的文件命名存在笔误,写为
inde.js,正确应为index.js,否则会额外触发模块找不到的报错。
解决方案
- 修正路由文件
routes/index.js的写法,删除不存在的./cjs子路径导入,调整导出逻辑:
// 直接从主包导入Route,无需引入/cjs路径 const { Route } = require('nanoexpress'); const testRoute = new Route(); testRoute.get('/route', async () => 'hello'); // 直接导出路由实例 module.exports = testRoute;
- 入口文件
app.js无需大幅修改,确认路径匹配即可:
const nanoexpress = require('nanoexpress'); // 确认路由文件路径正确 const indexRouter = require('./routes/index'); const app = nanoexpress(); const port = 3333; app.get('/', (req, res) => { res.send('Hello World!') }) // 直接挂载路由实例即可,访问/testy/route即可返回对应内容 app.use('/testy', indexRouter) app.listen(port)
内容的提问来源于stack exchange,提问作者Payam Omrani
相关产品推荐
相关产品推荐

