当前位置: 首页 > 知识库问答 >
问题:

npm安装不生成供应商可执行文件

梁宏才
2023-03-14

TL;DR:为什么npm不构建依赖项的二进制可执行文件,我如何构建它们而不显式npm rebuild

我的项目在一个常规的package.json中描述了它的依赖关系。当我运行npm install时,所有包都按预期安装到node_modules中。然而,有三个包有供应商子目录,这些子目录中应该有二进制可执行文件,但它们没有按照预期进行编译。

$ls/usr/src/app/node_modules/optipng-bin/vendor/
ls:无法访问/usr/src/app/node_modules/optipng-bin/vendor/:没有此类文件或目录

要解决这一问题,我需要在3个包中的每一个上运行“NPM rebuild”:

  • NPM重建节点-SASS
  • NPM重新生成JPEGTRAN-BIN
  • NPM重新生成optipng-bin

$npm重新生成optipng-bin

>optipng-bin@3.0.4后安装/usr/src/app/node_modules/optipng-bin
>节点lib/install.js

optipng-bin@3.0.4/usr/src/app/node_modules/optipng-bin

$ls/usr/src/app/node_modules/optipng-bin/vendor/
optipng

当我单独运行npm rebuild时,我认为它可能会“知道”构建其中的每一个包,但相反,它重新构建了其他一些包(这些包没有可执行文件):

$npm重建

>history@1.13.1 postinstall/usr/src/app/node_modules/history
>node./npm-scripts/postinstall.js

>react-router@1.0.0 postinstall/usr/src/app/node_modules/react-router
>node./npm-scripts/postinstall.js

>spawn-sync@1.0.13后安装/usr/src/app/node_modules/spawn-sync
>节点后安装

我如何让npm在它们的供应商目录中安装属于这3个依赖项的二进制可执行文件(不对每个都使用显式的rebuild)?

共有1个答案

楚洋
2023-03-14

结果发现这是npm 3.3.7(可能还有其他版本的npm)中的一个bug。升级到npm 3.5.3为我修复了它。参见https://github.com/npm/npm/issues/6679

 类似资料:
  • 我使用“npm安装”下载并编译一个小节点的所有依赖项。我写的js应用程序。我使用的“package.json”文件是正确的,包含了所有需要的信息。 其中一个要安装的包有“node-gyp”作为依赖项,所以我之前已经安装了“python2”包。 现在,在某一点上,我开始收到错误消息: 问题似乎是缺少一个环境变量。 谁能给我指出正确的方向?无论我在网上哪里搜索,都没有提到一个“PYTHON”变量,只有

  • 在我的项目中,我有一些经过手动编辑的作曲家供应商库;我的目的是在我的开发机器上将它们恢复到原始状态。 不幸的是,我触发了一个,因此我没有正确的编写器。不再锁定(已更新)。我找到了作曲家。来自我们的生产系统的锁(与旧的developmentcomposer.lock具有相同的库版本)。 在更换了新的作曲家之后。使用旧的锁,我应该执行什么来确保拥有与以前相同的环境?

  • 问题内容: 我如何在Supplier这里用lambda表达式替换代码 上面这段代码的输出是: 问题答案: 如果您必须专门使用以下内容: 编辑:使用IntStream.generate,您可以将其执行为 注意:就API设计而言,更好的解决方案肯定是利用这种用例。

  • 问题内容: 我在XP上使用python 2.6。我刚刚安装了py2exe,并且可以从hello.py成功创建一个简单的hello.exe。但是,当我尝试在实际程序上使用py2exe时,py2exe会生成一些信息消息,但无法在dist文件夹中生成任何内容。 我的setup.py看起来像这样: 和py2exe输出看起来像这样: py2exe似乎已经找到了我的所有导入文件(尽管看到win32时我感到有些

  • 当我尝试编译我的应用程序时,我得到以下错误: 现在我一直在stackoverflow和其他网站上搜索,我不是唯一一个遇到这个问题的人。我尝试了这个解决方案,也重启了几次程序,并完全重新安装了Android Studio。我仍然得到了同样的错误。我还尝试手动从 文件夹,并手动将最新版本的gradle放入该文件夹。 没有任何帮助。还是会出错。

  • 问题内容: 我以为我听说py2exe可以做到这一点,但我从来没有想过。有人成功做到了吗?我可以看到您的setup.py文件以及使用的哪些命令行选项吗? 基本上,我在考虑给它一个可执行文件,该文件执行诸如将自身解压缩到/ temp并运行的操作。 问题答案: 将创建一个没有依赖关系的.exe文件;使用该选项。它通过将所有需要的共享库打包到可执行文件中,然后在运行之前解压缩它们来完成此操作,正如你所描述