通过 npm install -g ...
安装它们可以使用全局包.
如果以这种方式安装 Typescript 类型,它们在全局文件夹中也是可用的,例如 /usr/lib/node_modules
在 linux 系统上。
使用 tsc 转译 typescript 源文件时,会打印出编译器错误并且转译失败。src/main.ts(3,26): error TS2307: Cannot find module 'express'.
但是,我希望像 NODE_PATH
这样的环境变量或文件 tsconfig.json
中的配置设置喜欢
{
"compilerOptions": {
...
"typeRoots": [
"/usr/lib/node_modules/@types"
]
}
}
可以解决这个问题(另见 Typescript Documentation )。
但是所有这些设置都被忽略了。只有在项目中本地安装类型才有帮助。
所以我的问题是,为什么
tsconfig.json
中的设置是被忽略,是否有可能使用全局安装的类型包Example project :
后
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
中可用.
最佳答案
AFAIK tsc
默认情况下不使用节点模块解析,除非您设置 module: "commonjs"
在 tsconfig.您是否尝试过设置 moduleResolution: "node"
关于typescript - 如何在 Typescript 中使用全局 Node 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46946205/