【发布时间】:2020-08-04 03:40:48
【问题描述】:
在我的 Express 项目中,我从 @common/foo 之类的路径导入。感谢tsconfig.json 中的paths,它只是../common/src/foo 的别名。这太棒了,并且在nodemon.json 中使用此脚本进行开发:
{
"watch": ["src", "../common/src"],
"ext": "ts",
"ignore": ["src/public"],
"exec": "ts-node -r tsconfig-paths/register src/index.ts"
}
问题是我无法让它在生产模式下工作。
我使用tsc 构建项目,如果我检查生成的文件,它们会从@common/ 而不是../common/src/ 导入内容。起初我认为这很好,因为tsconfig-paths 在运行时工作,所以我只需要将它包含在start 脚本中:
node -r tsconfig-paths/register dist/index.js
很遗憾,它不起作用,我在控制台中收到了那些 Cannot find module '@common/foo 错误消息。
有什么问题?是不是我配置错了?
我的package.json(删除了所有不相关的部分):
{
"main": "index.js",
"scripts": {
"start": "cross-env NODE_ENV=prod node dist/index.js",
"build": "rimraf ./dist/ && cross-env NODE_ENV=prod tsc"
},
"dependencies": {
"express": "^4.17.1"
},
"devDependencies": {
"@types/express": "^4.17.4",
"@types/node": "^13.11.0",
"cross-env": "^6.0.3",
"rimraf": "^3.0.2",
"ts-node": "^8.8.2",
"tsconfig-paths": "^3.9.0",
"typescript": "^3.8.3"
}
}
我的tsconfig.json(删除了所有不相关的部分):
{
"compilerOptions": {
"module": "commonjs",
"baseUrl": "./",
"outDir": "dist",
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"noImplicitAny": false,
"target": "es6",
"emitDecoratorMetadata": true,
"moduleResolution": "node",
"importHelpers": true,
"types": [
"node"
],
"typeRoots": [
"node_modules/@types"
],
"paths": {
"@common/*": [
"../common/src/*"
]
}
},
"include": [
"./src/**/*.ts"
],
"exclude": [
"./src/dist/"
],
"references": [
{
"path": "../common"
}
]
}
【问题讨论】:
标签: node.js typescript tsc