首页 > 解决方案 > 导入新路由时的 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 }` ) );

好的。现在为了提供尽可能多的信息,我将插入以下内容:

  1. 我的项目中的文件结构:

文件结构

  1. package.json文件配置:

包.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

标签: javascriptnode.jsexpresstypes

解决方案


除了确保target和在您module的 中设置为,请确保在您的导入中包含文件扩展名。即尝试更改以下行:esnexttsconfig.json

import postRouter from './routes/post-routes';

import postRouter from './routes/post-routes.ts';

推荐阅读