可以通过安装全局包来使用它们npm install -g ...
.
如果以这种方式安装 Typescript 类型,它们也可以在全局文件夹中使用,例如/usr/lib/node_modules
在Linux系统上。
当使用以下命令转译打字稿源文件时tsc,打印出编译器错误并且转译失败。
src/main.ts(3,26): error TS2307: Cannot find module 'express'.
但是,我希望环境变量如NODE_PATH
或文件中的配置设置tsconfig.json
like
{
"compilerOptions": {
...
"typeRoots": [
"/usr/lib/node_modules/@types"
]
}
}
可以解决这个问题(另见打字稿文档 https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#types-typeroots-and-types).
但所有这些设置都被忽略。仅在项目中本地安装类型会有帮助。
所以我的问题是,为什么设置是tsconfig.json
被忽略并且是否有可能使用全局安装的类型包
示例项目 https://github.com/ManfredSteiner/stackovf_46946205:
After npm install
你可以运行这个项目npm start
如果所有其他依赖项均已全局安装。仅安装了 7 个软件包:
"devDependencies": {
"@types/express": "^4.0.38",
"@types/node": "^8.0.31",
"@types/sprintf-js": "^1.1.0"
}
如果我删除本地目录node_modules
你得到错误
src/main.ts(2,25): error TS2307: Cannot find module 'sprintf-js'.
src/main.ts(3,26): error TS2307: Cannot find module 'express'.
...虽然这些包在全局包文件夹中可用/usr/lib/node_modules
.