![](/img/trans.png)
[英]Import/Require nodejs modules without @types in Typescript in 2018
[英]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,将sportsRouter.ts 更改为sportsRouter.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.