繁体   English   中英

需要带有打字稿的 nodejs 中的模块

[英]require for modules in nodejs with typescript

按照 server.ts 中的代码:

const express = require('express');
const athletesRouter = require('./src/routes/athletesRouter');

在控制台中运行node server.ts ,抛出:

错误:找不到模块“./src/routes/athletesRouter”

如果我将 server.ts 更改为 server.js,将sportsRou​​ter.ts 更改为sportsRou​​ter.js,则一切正常。

这是我的 tsconfig.json:

{
  "compilerOptions": {
    "noImplicitAny": true,
    "esModuleInterop": true,
    "target": "esnext",
    "moduleResolution": "node",
    "allowSyntheticDefaultImports": true,
  },
}

这是 .babelrc(虽然我不确定这是否相关):

{
  "presets": [
    [
      "@babel/preset-typescript",
      {
        "targets": {
          "node": "current"
        }
      }
    ]
  ]
}

我错过了什么?

对此的解决方案是安装ts-node ,然后在控制台中运行ts-node server.ts这个 npm 包必须全局安装才能使用该命令。

以下是扩展此主题的额外信息

有两种情况:

  • 开发环境:可以使用nodemon在更改代码的同时重新加载服务器。 它的--exec命令可用于运行ts-node而无需将.ts转译为.js

  • 生产环境: .ts代码必须转译为.js 这可以通过打字稿中的tsc命令来完成。 之后,使用 nodejs 中的node命令。

可以在下面的package.json中找到这种两种场景方法的示例,其中使用了两个脚本:

"scripts": {
    "startDevelopment": "nodemon --exec ts-node server.ts",
    "startProduction": "tsc && node server.js"
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM