123777tw吧 关注:115贴子:5,989
  • 6回复贴,共1

【吐槽】npm install npm -g 报错 EEXIST

只看楼主收藏回复

最近才开始研究node.js相关技术,发现这个问题非常**,类似一个骑驴找驴的问题。更可笑的是,度娘第一页居然搜不到一个正确答案。


IP属地:辽宁1楼2019-11-20 11:21回复

    这是“度娘头条”页面某人的回复。我现在正努力控制自己的情绪。如果你删掉了这个npm,那么下次你再执行npm直接会报告没有npm指令!


    IP属地:辽宁2楼2019-11-20 11:26
    回复
      这个事情整个过程其实很简单,就是你用npm更新自己的时候,npm.cmd被占用不能替换,然后替换这个文件的程序又是它自己本身……我不知道npm是怎么一步一步走到6.13.1的,为什么会出现这么xx的问题。
      我说一下我的解决方案:重命名npm.cmd为npmxx.cmd,然后执行npmxx install npm -g,最后手动删掉npmxx.cmd。


      IP属地:辽宁3楼2019-11-20 11:30
      回复
        另外网上有说用cnpm去更新npm,这个如果你信任cnpm的话也是可以的。
        或者我还有一个想法就是先找一个空文件夹执行 npm install npm,然后把整个文件夹拿去global路径替换。当然这个方案仍然止于我脑中的一个想法而已,不确定有没有什么别的问题。


        IP属地:辽宁4楼2019-11-20 11:33
        回复
          另外说个题外话,现在码农难,其实都是“自己”zuo的,这种没有责任感的代码会让码农大军的门槛一涨再涨。


          IP属地:辽宁5楼2019-11-20 11:42
          回复
            今日继续研究nodejs,发现npm做了一件非常危险的事情,在执行install -g安装时,尝试创建路径符号链接。这一行为导致其安装的脚本库不能修改路径,尤其是在共享项目中这个会导致致命错误。
            话题转回来,如果从官方网站下载完整最新版nodejs,执行npm install npm -g命令时实际上是在当前用户名AppData路径下创建副本,然后用符号链接关联过去。这个行为,在安装其他脚本库时,由于环境变量没有设在AppData下的npm,无法直接执行,而且不同用户安装会在不同用户的文件夹下面创建脚本库。如果不是从官方网站下载完整最新版nodejs,而是从其他渠道获取的nodejs,比如Visual Studio插件获取方式,不一定会执行相同的行为。在安装其他脚本库时可以直接在之前的nodejs路径下创建,并且可以直接调用执行,但是唯独更新npm时会得到文件占用报错。


            IP属地:辽宁6楼2020-02-04 16:55
            回复
              根据我本人的调查,官方原版的nodejs带有的npm行为,在更新npm时,如果遇到连同npm.cmd文件一同更新的情况,改更新也不会生效。也就是说,被占用的npm.cmd文件并没有得到更新,对npm.cmd文件的更新也毫无意义。按照这个逻辑,如果是自行配置的npm,在执行npm install npm -g 时针对npm.cmd文件报 EEXIST 错误可以忽略。


              IP属地:辽宁7楼2020-02-04 19:24
              回复