typescript - 如何在 Typescript 中使用全局 Node 包

标签 typescript

通过 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/

相关文章:

angular - 无法绑定(bind)到 'chartData',因为它不是 'div' 的已知属性,在 Angular 2 中?

typescript - 如何在 TypeScript 中实现强类型 ID?

typescript - 将 CoreUI 图标导入 Vue.js TypeScript 项目

javascript - WebCryptoAPI 是否在浏览器或远程服务器上运行

javascript - 订阅子属性的 knockout 可观察对象并在 TypeScript 的绑定(bind)上下文中调用父方法

具有隐式属性类型的 Typescript 泛型

typescript - 你如何在 TypeScript 中编写 Gulp 任务?

javascript - angular2路由器避免url编码

java - Kotlin 中的任何变量名

typescript - Typescript 中是否有类似 ReturnType<T> 的 ArgumentsType<T>?