我分叉了一个npm模块,现在它是一个git repo。
所以我的package.json:
"dependencies": {
"some-module": "git+https://github.com/my-name/some-module.git",
}
通过获取上游和合并来同步分叉回购。 但是当我尝试更新其他npm模块时,它会出错:
npm ERR! git Appears to be a git repo or submodule.
npm ERR! git /Users/.../node_modules/some-module
npm ERR! git Refusing to remove it. Update manually,
npm ERR! git or move it out of the way first.
npm ERR! System Darwin 13.4.0
npm ERR! command "node" "/usr/local/bin/npm" "update"
npm ERR! cwd /Users/...
npm ERR! node -v v0.10.32
npm ERR! npm -v 1.4.28
npm ERR! path /Users/.../node_modules/some-module
npm ERR! code EISGIT
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /Users/.../npm-debug.log
npm ERR! not ok code 0
更新时有没有办法忽略git repo?或者跳过此错误?
答案 0 :(得分:10)
npm检查所有目录是否存在.git
目录,并抛出EISGIT
错误(如果存在),因此无法忽略它或跳过它。
code会检查它是否是链接:
mod.parent && !mod.isLink && [checkGit, mod.realpath],
所以我能够通过将模块符号链接到node_modules来使其工作。
$ ln -s ../some-module node_modules
答案 1 :(得分:5)
我在执行npm安装库时也遇到了这个问题,我能够通过从错误消息中提到的相应library_name中删除.git
目录(隐藏在node_modules/library_name
中)来解决此问题
还要确保不要从项目的根目录中删除.git directory
,因为如果从项目的根目录中删除.git目录,则将丢失与git相关的信息,例如分支信息等。
感谢bolav很好地解释了如何引发EISGIT错误。
答案 2 :(得分:4)
rm -rf node_modules/*/.git/
尝试一下
答案 3 :(得分:2)
是的,有一种方法可以跳过错误。
1)打开文件" C:\ Program Files \ nodejs \ node_modules \ npm \ node_modules \ npm-install-checks \ index.js"
2)在最底层注释掉这段代码:
if (!er && s.isDirectory()) {
var e = new Error(folder + ': Appears to be a git repo or submodule.')
e.path = folder
e.code = 'EISGIT'
return cb(e)
}
完成。
来自另一个长期受此错误影响的开发者;由于各种系统的限制,所有建议的解决方案都不适用于我的情况。
建议:NPM与符号链接一起使用,因此从node_modules创建模块的符号链接到您的库repo文件夹。
问题:然后Watchman没有扫描其中的JS文件。
建议:" npm发布"和" npm install"。每一个。单。时间。
问题:快速开发测试/周期很糟糕,并且在npm目录中发送了数百个永远不会使用的版本。
建议:使用Watchman链接(WML)。 (即文件更改时的目录自动复制)
问题:必须有一个后台程序一直在运行,所有包含的回购在我的机器上。此外,这意味着我无法直接在node_modules文件夹中打开文件以进行快速更改;相反,我每次都必须去图书馆的源代码库。这通常很好,但有时在程序仓库中进行更改会很好,并且它会反映在库仓库中,反之亦然。
所以是的,通过上述更改,我可以使用库目录的硬链接克隆并避免上述问题。
我用它来创建目录级硬链接克隆:http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html#hardlinkclones
这种方法的一个问题是,每当我在库中添加或删除文件时,我都必须重新运行硬链接克隆。但至少在现有文件中进行更改时,我不必做任何事情。 (这是更痛苦的)
答案 4 :(得分:0)
KISHOREs-MBP:dummyReactNativeProject simpro $ npm install-保存react-native-gesture-handler npm ERR!路径/ Users / simpro / Desktop / Kishore / dummyReactNativeProject / node_modules / react-native-safe-area-view npm ERR!代码EISGIT npm ERR! git / Users / simpro / Desktop / Kishore / dummyReactNativeProject / node_modules / react-native-safe-area-view:似乎是git repo或子模块。 npm ERR! git /用户/ simpro /桌面/ Kishore / dummyReactNativeProject / node_modules / react-native-safe-area-view npm ERR! git拒绝删除它。手动更新, npm ERR! git或先将其移开。
npm错误!可以在以下位置找到此运行的完整日志: npm ERR! /Users/simpro/.npm/_logs/2019-05-10T10_29_18_510Z-debug.log KISHOREs-MBP:dummyReactNativeProject simpro $ rm -rf .git KISHOREs-MBP:dummyReactNativeProject simpro $ npm install-保存react-native-gesture-handler npm ERR!路径/ Users / simpro / Desktop / Kishore / dummyReactNativeProject / node_modules / react-native-safe-area-view npm ERR!代码EISGIT npm ERR! git / Users / simpro / Desktop / Kishore / dummyReactNativeProject / node_modules / react-native-safe-area-view:似乎是git repo或子模块。 npm ERR! git /用户/ simpro /桌面/ Kishore / dummyReactNativeProject / node_modules / react-native-safe-area-view npm ERR! git拒绝删除它。手动更新, npm ERR! git或先将其移开。
npm错误!可以在以下位置找到此运行的完整日志: npm ERR! /Users/simpro/.npm/_logs/2019-05-10T10_33_07_251Z-debug.log
在安装react-native-gesture-handler时,我也面临着同样的问题。 然后我从节点模块中删除了 react-native-safe-area-view (这是给文件夹的问题),并安装了react-native-gesture-handler并为我工作。
原因:由于git
答案 5 :(得分:0)
一种简单的方法是先删除模块,然后再使用'npm install'再次加载它。
rm -rf node_modules/library_name
npm install