如何通过 Typescript 使用全局 Node 包

2024-01-06

可以通过安装全局包来使用它们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.


有与上述相同的问题,对我来说path财产有效。请注意,这与描述的 basePath 相关here https://www.typescriptlang.org/docs/handbook/module-resolution.html#path-mapping。请参阅下面的示例:

      "baseUrl": "/Users/myUser/Projects/myProject",
        "paths": {
            "bignumber.js": [
                "../../.nvm/versions/node/v16.15.1/lib/node_modules/bignumber.js"
            ],
            "moment": [
                "../../.nvm/versions/node/v16.15.1/lib/node_modules/moment"
            ],
            ]
        },
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过 Typescript 使用全局 Node 包 的相关文章

  • Rxjs 带延迟功能的重试

    我正在尝试使用retry with delay函数 我预计函数会在 1000 毫秒延迟后调用 但事实并非如此 这里可能会出现什么错误 查看控制台输出 同一时间 16 22 48 我预计有 16 22 48 16 22 59 canCreat
  • Typescript 中的子类化

    我在 Typescript 中有一个存储类 它实现了Storage界面 说MyStorage 但它的方法太多了 所以我想用它来代替MyStorage getCandy MyStorage Candies getCandies 该结构可能看起
  • 复选框警报控制器 - 添加 3 个按钮

    我用 IONIC 2 Beta 版本制作了一个应用程序 我正在使用复选框警报控制器 并添加两个按钮 确定 和 取消 现在我需要在警报控制器中再添加一个按钮 我在下面实现了添加一个按钮 alert addButton Cancel alert
  • Angular 12.1 使用 typescript 添加 html 元素

    我正在通过 youtube 学习 Angular 但我正在尝试做一些新的事情 但我遇到了一个错误 我的代码附在下面 请帮助我 我想这样设置属性div setAttribute click popUp event 但我得到了错误 打字稿 ex
  • 打字稿 keyof 返回字符串数组

    假设我有一堂课 class Test propA propB propC 我想创建一个返回字符串数组的方法 并将其键入为仅 Test 类中存在的键 我该如何使用keyof特征 class Test propA propB propC get
  • 如何在 TypeScript 中获取类方法的返回类型

    在较新的 TypeScript 版本中 我想是 2 8 以后 我可以轻松获取函数的返回类型 function f return hi type MyType ReturnType
  • 使用字符串枚举来扩展 keyof

    我在理解使用字符串枚举来索引类型时的行为时遇到了一些困难 似乎有时 TS 会识别字符串枚举的值是keyof某些类型 有时则不然 为了显示 enum Key FOO foo type MyObj foo string 因此 类型属性的枚举 即
  • “未知”与“任何”

    TypeScript 3 0 引入unknown根据他们的 wiki 输入 未知现在是保留类型名称 因为它现在是内置类型 根据您对未知的预期用途 您可能需要删除 完全声明 有利于新引入的未知类型 或者 将其重命名为其他名称 有什么区别unk
  • If 语句中的 Typescript 类型推断不能用作变量

    考虑以下示例 class A class B extends A foo return 6 const variable A new B const isValid variable instanceof B if isValid vari
  • “ReactNode”不是有效的 JSX 元素

    我有以下代码 代码沙箱 https codesandbox io s react typescript forked 50beyp file src App tsx import ComponentType ReactNode from r
  • 在从命令行运行的 NestJS 脚本中使用服务

    我知道如何从命令行运行脚本 使用npm or npx ts node script ts 正如所述here https stackoverflow com questions 60704316 run nestjs script from
  • Typescript 和 Mongoose - “this”在实例方法中不可用

    我目前正在将我的 API 从 JS 转换为 TS 然而 我在猫鼬和打字稿方面遇到了一些困难 具体来说 this在我的实例方法中不可用 My code AccountSchema methods comparePassword async f
  • Angular2:setTimeout仅调用一次

    我正在 Angular2 中实现需要使用的功能setTimeout My code public ngAfterViewInit void this authenticate loop private authenticate loop s
  • Angular 中的文件输入事件类型

    所以我已经使用 Angular 和 Typescript 很长时间了 我似乎无法找出输入文件的类型是什么 例如
  • 单击上一页的按钮路由到该页面后如何刷新页面

    我有 2 个页面 一个主页和一个页面 2 当我单击主页上的按钮时 它会路由到 page2 现在 单击主页上的按钮后 当我到达第 2 页时 它应该刷新 因为我的项目中存在一些缓存问题 我在ngoninit上添加了window location
  • 如何使用角度材料在具有可扩展行的表格中创建嵌套垫表

    我有以下数据 id c9d5ab1a subdomain wing domain aircraft part id c9d5ab1a info mimetype application json info dependent parent
  • TypeScript 中泛型的不安全隐式转换

    TypeScript 编译器tsc编译以下代码 即使使用 strict旗帜 然而 该代码包含一个基本错误 而在 Java 或 C 等语言中可以避免这种错误 interface IBox
  • Angular 2 和 TypeScript 的承诺

    我正在尝试使用routerCanDeactivate我的应用程序中的组件的函数 简单的使用方法如下 routerCanDeactivate return confirm Are you sure you want to leave this
  • CSF3 中的 Typescript 支持

    我正在使用 CSF3 编写故事 并且我想正确注释我的故事 我用谷歌搜索过 基本上找不到答案 我尝试过一些技巧here https github com storybookjs storybook issues 7677但没有任何效果 我发现
  • 使用 Vite 和 React 进行生产构建时出错:Uncaught TypeError 中的错误:_ 不是函数

    我在我的网站上使用 Vite React React Router 和 TypeScript 我在运行生产构建时遇到问题 在开发模式下一切正常 使用生产版本时 我的浏览器显示白色背景 并且在浏览器控制台中出现以下错误 上面的链接将我带到第

随机推荐

  • 图像的随机位置

    我找到了一个可以随机定位 div 图像的脚本 然而 它并没有完全按照我想要 需要的方式工作 每个图像都加载在一个 div 中 我猜这并不理想 我有大约 30 张图片 但它们加载得不好并且var posy Math random docume
  • dotenv gem 在 Rails 6 或 Ruby 2.6.5 中无法获取变量

    我当时用的是多特恩宝石 https github com bkeepers dotenv将开发环境变量存储在机密文件中 在我的计算机上升级 ruby 和 Rails 后 gem 不再提取变量 为了尝试找出原因 经过一段时间尝试不同的选项 我
  • 如何将微秒时间戳转换为日期时间?

    我正在从 Google Chrome 中获取 cookie 过期日期 从表面上看 Chrome 使用 1601 01 01 00 00 00 UTC 作为纪元的时间戳来存储 cookie 过期时间 我目前的实现如下 stamp int re
  • 在音频设备连接/断开时自动收到通知?

    每当用户连接或断开音频设备时是否可以自动收到通知 在 Vista 中 您可以使用 Core AudioIMMNotificationClient 接口 http msdn microsoft com en us library window
  • Sidekiq - 无法在 5.000 秒内获得数据库连接

    我在 os x 上开发 Rails 4 和 Sidekiq 时收到以下警告 10 13 39 worker 1 2014 09 22T07 13 39 857Z 86981 TID oug0oog10 WARN could not obta
  • 如何在OpenCart中设置配置?

    警告 require once sgweb1 minufashion system startup php function require once 无法打开流 没有这样的文件或 目录在 D inetpub vhosts sgwebgen
  • 从可访问性的角度来看,我应该更喜欢

    这个问题在这里已经有答案了 通常 在书籍 教程和一些实际网页中 我看到导航栏标记为 li a 中的 s 元素 ul 中的元素 ul li
  • 类型错误:无法连接“str”和“type”对象

    在解决我的问题之前 我已经四处寻找答案 但似乎找不到任何针对我的情况的信息 好的 基本上我通过 cmd 调用我的脚本并传入 16 个参数并使用它们来设置我拥有的一些变量 我正在创建一个自定义 html 报告供我们公司使用 我只是用这些变量来
  • pandas.read_excel() 输出“OverflowError:日期值超出范围”,而不存在日期列

    我正在尝试将一个大的 Excel 文件 400k x 40 导入到 Pandas DataFrame 中 虽然它在我的本地计算机上运行良好 但在移植到 Python 3 7 Pandas 1 2 4 和 Openpyxl 3 0 7 的 L
  • 如何在配置文件中隐藏数据库密码

    我正在开发一个 C 项目 该项目需要访问数据库以读取其输入 到目前为止 我们使用了默认用户名 postgres 和存储在基于 xml 的配置文件中的 固定明文 密码以及许多其他设置 现在我需要的是在提供配置文件时向用户隐藏密码 FYI 开发
  • gulp 构建语义用户界面非常慢

    我已经为此搜索了好几天 但运气不佳 我通过 NPM 通过 Laravel 安装安装了 Semantic UI 我修改了项目根目录中的 gulpfile js 以导入语义 UI 的构建和监视任务 var elixir require lara
  • 媒体会话兼容未在 Pre-Lollipop 上显示锁屏控件

    我在用着MediaSessionCompat来自 AppCompat 支持库修订版 22 在 Lollipop 上 我收到通知 而且锁屏的背景是专辑封面 一切都很顺利 在棒棒糖之前的设备上 锁屏上的音乐控件根本不显示 这很奇怪 我尝试了一切
  • AngularJS:使用多行写入和读取文本区域

    我不敢相信为什么我找不到这个主题的任何内容 我得到了一个表格 其中包含姓氏 输入 名字 输入 描述 文本区域 因为我想提供几行 让我们从创建一个新对象开始 好的 你输入类似的内容 姓 fox 名 peter 描述 what can I sa
  • fread():从文件读取(不对齐)会导致跳过字节

    我有一个文件 使用 C 我想使用 fread 来自 stdio h 读取它的内容并将其写入结构的成员中 在我的例子中 开头有一个 2 字节 int 后面跟着一个 4 字节 int 但是 在将文件内容正确写入结构的前两个字节变量后 它会跳过两
  • 是否可以将 Asterisk 作为支持 WebRTC 的移动应用程序的信令服务器

    是否可以将 Asterisk 作为支持 WebRTC 的移动应用程序的信令服务器 我发现我需要在node js 中创建信令服务器 我想知道 Asterisk 是否可以为我完成这项工作 此外 WebRTC 媒体是否通过信令服务器传递 或者 是
  • 在 GitLab CI 管道中使用 docker-compose

    我正在尝试使用以下内容实现 GitLab 持续集成 CI 管道 gitlab ci yml file image docker latest When using dind it s wise to use the overlayfs dr
  • Matlab 相当于 Python 的“None”

    Matlab中是否有一个关键字大致相当于None在Python中 我试图用它来标记函数的可选参数 我正在翻译以下Python代码 def f x y None if y None return g x else return h x y 进
  • Winrt StreamWriter 和 StorageFile 未完全覆盖文件

    在这里快速搜索一无所获 因此 我开始使用一些相当迂回的方法在我的 WinRT 应用程序中使用 StreamWriter 阅读效果很好 写作则不同 我看到的是 当我选择要写入的文件时 如果我选择一个新文件 那么就没有问题 该文件已按我的预期创
  • 如何在Android上创建简单的日历[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何通过 Typescript 使用全局 Node 包

    可以通过安装全局包来使用它们npm install g 如果以这种方式安装 Typescript 类型 它们也可以在全局文件夹中使用 例如 usr lib node modules在Linux系统上 当使用以下命令转译打字稿源文件时tsc