javascript - 导入新路由时的 Node.js express.Router ERR_MODULE_NOT_FOUND
问题描述
我遇到了一个奇怪的错误。我只是在创建一个新文件夹来分隔我的路线。
express.Router
在里面,我使用 API创建了路由,并导出了路由器本身。
这是代码内部的样子post-routes.ts
:
import express from 'express';
const router = express.Router();
router.get( '/', ( req, res ) =>
{
res.send( 'This is working' );
} );
export default router;
好的。我现在要做的就是将它导入到我的文件中并为我的文件index.ts
创建一个根路径。post-routes.ts
如果您发现我的方法有问题,请告诉我。
index.ts
文件:
import express from 'express';
import cors from 'cors';
import postRouter from './routes/post-routes';
const PORT = process.env.PORT || 5000;
app.use( '/posts', postRouter );
app.use( express.json( { limit: '30mb' } ) );
app.use( express.urlencoded( { limit: '30mb', extended: true } ) );
app.use( cors() );
app.listen( PORT, () => console.log( `listening at ${ PORT }` ) );
好的。现在为了提供尽可能多的信息,我将插入以下内容:
- 我的项目中的文件结构:
package.json
文件配置:
如您所见,我正在使用"type": "module"
能够在我的节点应用程序中使用导入。至于打字稿,我没有得到任何编译错误,所以index.ts
看到了post-routes.ts
文件,所以我希望它index.js
也会看到post-routes.js
文件。但是服务器会抛出下面的错误。怎么会这样?
Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'E:\Github\hospytal-fasion\server\dist\routes\post-routes' imported from E:\Github\hospytal-fasion\server\dist\index.js
解决方案
除了确保target
和在您module
的 中设置为,请确保在您的导入中包含文件扩展名。即尝试更改以下行:esnext
tsconfig.json
import postRouter from './routes/post-routes';
至
import postRouter from './routes/post-routes.ts';
推荐阅读
- laravel - 解析错误:语法错误,意外的 'F' (T_STRING),需要 ',' 或 ')'
- javascript - 用于碰撞检测的 Matter.js
- ruby-on-rails - Ruby on Rails 我的数据库总是使外键为零,为什么?
- html - 如何限制css中边框的长度?
- javascript - 如何在按下和按下按钮时连续递增
- php - 数据解析导致未定义的开始,stripos 不返回任何内容
- c - 如何使用相对路径在 C 中使用 xcode 打开文件?
- node.js - 为什么我的服务器在部署到 Heroku 时会导致语法错误,但在本地运行时没有错误(使用 Create React App、Node/Express)?
- tfs - TFS 2018 呼吁将管理员的 API 添加到项目返回 404 @tfs
- java - 在 IntelIJ 中生成从 SQL 服务器到 Hibernate POJO 类的存储过程