【问题标题】:Node.js express.Router ERR_MODULE_NOT_FOUND when import the new routes导入新路由时的 Node.js express.Router ERR_MODULE_NOT_FOUND
【发布时间】:2021-06-14 02:11:57
【问题描述】:

我遇到了一个奇怪的错误。我只是在创建一个新文件夹来分隔我的路线。

在里面我使用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文件配置:

如您所见,我使用"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

【问题讨论】:

    标签: javascript node.js express types


    【解决方案1】:

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

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

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

    【讨论】:

    • 没错。除了一个例外。它必须是.js 扩展名。我已经在我的tsconfig.json 的目标和模块中使用esnexttsc 不会将 .ts 扩展名转换为 .js 扩展名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 2018-04-02
    • 1970-01-01
    • 2017-05-30
    • 2021-09-07
    • 2021-01-02
    相关资源
    最近更新 更多