`npm install` fails at `git submodule update`



我有一个反应新应用,其中有一些依赖项在AWS CodeCommit上托管。

我已经从事这个项目了一段时间,但是在最近升级了Node&NPM我无法运行该应用程序。它卡在npm install。这是错误 -

npm ERR! code 1
npm ERR! Command failed: git submodule update -q --init --recursive
npm ERR! warning: templates not found in C:UsersmyComputerAppDataLocalTemppacote-git-template-tmpgit-clone-c78347e9
npm ERR! warning: unable to access 'Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/.gitattributes': Filename too long
npm ERR! warning: unable to access 'Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/.gitattributes': Filename too long
npm ERR! error: unable to create file Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json: Filename too long
npm ERR! warning: unable to access 'Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/.gitattributes': Filename too long
npm ERR! error: unable to create file Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json: Filename too long
npm ERR! warning: unable to access 'Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/.gitattributes': Filename too long
npm ERR! warning: unable to access 'Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/.gitattributes': Filename too long
npm ERR! error: unable to create file Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json: Filename too long
npm ERR! warning: unable to access 'Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/.gitattributes': Filename too long
npm ERR! error: unable to create file Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json: Filename too long
npm ERR! Unable to checkout 'dc5c974b89509992d6c6e0d0510344fd0e35baa6' in submodule path 'ios/Vendor/SDWebImage'
npm ERR!
npm ERR! A complete log of this run can be found in:
npm ERR!     C:UsersmyComputerAppDataRoamingnpm-cache_logs2019-02-18T15_22_41_579Z-debug.log

这是指向完整日志文件的链接。

您可以看到我在Windows机器上工作。当我尝试在MacOS上构建该应用程序时,它可以很好地工作。我尝试了不同版本的节点,npm&git,但错误仍然存在。

我怀疑这是一个与Windows相关的问题,但不知道如何解决此问题。

好的。我发现问题&解决方法。

问题是我们使用的是react-native-fast-image&执行npm-install时,这会导致错误。我克隆了我们的repo&将其链接在package.json中为 -

"react-native-fast-image": "file:../react-native-fast-image",

而不是 -

"react-native-fast-image": "git+https://github.com/{account-name}/react-native-fast-image.git",

现在解决了问题。

除非NPM本身通过尊重.npmignores文件对其进行修复,否则没有愚蠢的方法来执行此操作。我尝试了@garfiere解决方案,该解决方案正常。

替代解决方案:

我最近尝试了另一种解决方案,该解决方案不需要从其他本地文件夹手动克隆包。

相反,我从具有子模型的软件包中删除了.gitmodules文件。这修复了npm install。然后在postinstall中添加了一个shell脚本以创建.gitmodules文件。还添加了.gitModules .gitignore,因此它不会再次推动。

问题详细信息

当发生以下情况时,发生这种情况

  • 您在package.json中有一个包装。
  • 此软件包包含您无法访问的子模块。

即使您在.npmignore中添加.gitmodules。它仍然行不通。这一切都发生在NPM缓存文件夹中。@garfiere解决方案目标第一点。我的解决方案目标第二。

相关内容

  • 没有找到相关文章

最新更新