【问题标题】:npx from command line does not find imports?命令行中的 npx 找不到导入?
【发布时间】:2021-09-13 21:25:44
【问题描述】:

我正在尝试从命令行运行一个简单的hello.ts 脚本。如果脚本没有依赖项,则此方法有效:

npx ts-node hello.ts

但是一旦我开始添加一些依赖项......

import _ from 'lodash';
console.log('hello');

失败了:

找不到模块“lodash”或其对应的类型声明。

即使我全局安装了依赖项,它仍然会失败。那么我如何告诉npx(或ts-node)考虑全局安装的依赖项?

更新

使用Node 16.9.1(通过Version Lens 升级)。多次卸载/重新安装导入的库后,错误似乎消失了。

【问题讨论】:

  • 奇怪,我也遇到了这个问题。你在哪个节点和 npm 版本上?

标签: npx ts-node


【解决方案1】:

如果您使用npm >=1.0,您可以使用 npm link 创建一个本地链接,指向已在全球范围内安装的包。 (警告:操作系统必须支持符号链接。

IE:npm install -g lodash && npm link lodash

然而,这并非没有问题。

npm 链接是一个开发工具。管理本地开发盒上的包非常棒。但是使用 npm link 进行部署基本上是在自找麻烦,因为它使得在不知不觉中更新内容变得超级容易。

作为替代方案,您可以在本地和全局安装包。

有关更多信息,请参阅:

https://nodejs.org/en/blog/npm/npm-1-0-link/

https://nodejs.org/en/blog/npm/npm-1-0-global-vs-local-installation/

【讨论】:

  • 我在全球范围内安装了这些软件包。它没有帮助。是否需要一个成熟的tsconfig.json
【解决方案2】:

您是否正在使用n 包?我使用 n 从较新版本的节点 (16.2.0) 更改为较旧版本的节点 (12.13.0),运行 npm inpx 失败并出现不同的错误。

使用n 改回16.2.0 似乎已经解决了这个问题,所以我想这可能是package-lock.json 或类似的问题

【讨论】:

  • 节点 16.9.1。查看我的更新。
猜你喜欢
  • 2018-09-28
  • 2014-04-12
  • 2020-03-16
  • 2021-03-23
  • 1970-01-01
  • 1970-01-01
  • 2020-06-09
  • 2020-01-23
  • 2020-11-01
相关资源
最近更新 更多