【问题标题】:npm installs @types/.../node_modules/reactnpm 安装 @types/.../node_modules/react
【发布时间】:2019-06-28 23:38:43
【问题描述】:

我正在使用 react (tsx)、react-table、react-i18next 和 @types。

当我运行 npm i 时,@types/react-table 和 @types/react-i18next 也会在其文件夹中安装 react typings 作为子文件夹。所以我最终在每个相关的@types 模块中都有多个@types/react 副本。结果,打字稿在尝试运行应用程序时抛出错误,当我删除 @types\react-table、@types\react-i18next 文件夹中的 node_modules 时,它编译得很好。

我正在使用 npm 6.5.0 和节点 8.15。 这种行为在我同事的计算机上有所不同(它们都在 Mac OS Mojave 上运行),它不会在上面列出的包上安装嵌套的 @types\react。

编辑: 将 @types 移动到 devDependencies,看起来这解决了它。

【问题讨论】:

  • 尝试安装没有可选依赖项的第二个,使用以下附加参数--no-optional
  • @Atomzwieback 这个参数(--no-optional)没有保存在json包中,所以当我们进行npm install时,它仍然会尝试安装@types\react。

标签: node.js reactjs typescript npm


【解决方案1】:

对于您的问题,目前还没有最终解决方案,因为 atm 无法保护 --no-optional 参数,因此您可以在此处找到 npm GitHub 存储库中的已关闭功能请求:

https://github.com/npm/npm/issues/14185

因此,atm 只有排除软件包的选项,并且每个新开发人员都必须使用 --no-optional 参数自行安装它,否则您可以选择通过 --save-dev 选项将其添加到开发依赖项中,该选项可解决问题,但这是一种肮脏的解决方案,即使看起来这是唯一的解决方案,因为 npm 开发人员不会在不久的将来添加该功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 2021-10-14
    • 2013-12-24
    • 2019-10-16
    • 2011-11-16
    • 2016-03-14
    • 2016-11-23
    相关资源
    最近更新 更多