当我在NodeJS + Typescript应用程序中使用require
时,必须将index.ts
文件添加到url中,否则会出现错误Cannot find module './api'
,例如
const api = require('./api/index.ts')
-有效
const api = require('./api')
-不起作用
我的package.json
:
"dependencies": {
"@types/express": "^4.16.1",
"cors": "^2.8.5",
"express": "^4.16.4",
"mongoose": "^5.5.5",
"morgan": "^1.9.1",
"ts-node": "^8.1.0",
"ts-node-dev": "^1.0.0-pre.32",
"tslint": "^5.16.0",
"typescript": "^3.4.5"
}
答案 0 :(得分:1)
TypeScript源文件必须先编译为JavaScript文件,然后才能由Node.js执行。
例如:npx tsc
。
答案 1 :(得分:1)
require
不是使用typescript
时的默认导入格式,因此有时可能无法解决,请尝试使用import * as api from './api'
答案 2 :(得分:0)
这可能是一些事情的结果。您的package.json与TypeScript如何解决相对的导入/需求无关。
检查target
文件中的module
,moduleResolution
和tsconfig.json
编译器选项。更具体地说,module
应该设置为"commonjs"
(对于Node.js应用程序),moduleResolution
应该设置为"node"
详细了解 here 。
答案 3 :(得分:0)
实际上有两个问题:
因此,我没有使用require
,而是将所有内容更改为import
,还需要向脚本中添加ts-node
,例如:nodemon --watch '*.ts' --exec 'ts-node' server.ts