我有一个反应新应用,其中有一些依赖项在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解决方案目标第一点。我的解决方案目标第二。