【问题标题】:npm install packagename --save-dev not updating package.jsonnpm install packagename --save-dev 不更新 package.json
【发布时间】:2015-07-16 18:09:14
【问题描述】:

package.json 在运行 --save-dev 后不会更新是否有简单或微妙的原因?这是我的命令:

npm install modulename --save-dev

从项目的根目录运行。命令成功,新模块按预期显示在 node_modules 目录中。帮助将不胜感激。我正在使用 npm v 1.4.28

我当前的package.json 的全部内容是:

{
    "name": "FooWeb",
    "version": "1.0.0",
    "description": "Foo Web",
    "devDependencies": {
        "gulp": "3.8.11",
        "gulp-jshint": "1.9.2",
        "gulp-concat": "2.5.2",
        "gulp-sass": "1.3.3",
        "gulp-sourcemaps": "1.4.0",
        "gulp-watch": "4.1.1"
    }
}

我在安装没有存储库字段或自述文件的软件包时确实收到警告,但我认为这不相关。

【问题讨论】:

  • 你检查 package.json 权限了吗?
  • @Aaron package.json 权限很好。
  • 不知道npm ls 很漂亮!在我的情况下,它会在树中为模块输出一个绿色的无关标签,然后出现 ERR! extraneous: modulename@x.x.x. [path] 错误我也会继续沿着这条路径进行故障排除
  • --save 为我工作 (stackoverflow.com/a/37603531/470749)
  • 尝试使用 cmd 而不是 vs code 终端

标签: node.js dependencies npm


【解决方案1】:

如果您没有从package.json 目录运行命令,就会发生这种情况。

例如,如果您被放置在文件夹 Project 而不是 Project\ClientApp 中,就会发生这种情况。

您会注意到,如果发生这种情况,您只会在错误的位置获得 package-lock.json

【讨论】:

    【解决方案2】:

    只是想添加另一个可能对我来说是解决方案的答案。

    验证您是否在 Angular 项目的目录中。我没有,因此更改没有反映在我的 package.json 文件中。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,因为 nodemon 已在全球范围内安装。

      我必须先卸载它

      npm uninstall -g nodemon

      然后将其作为开发依赖安装在本地

      npm install --save-dev nodemon

      然后应该更新package.json 文件。有时您的编辑器也可能会阻止文件更新,因此如果没有发生其他情况,请确保重新启动它。

      【讨论】:

        【解决方案4】:

        这发生在 Intellij 上

        对于遇到此问题的其他人,您是否从现有项目中复制了您的项目?

        如果是这样,请关闭 Intellij 并删除 .idea 文件夹。 (你也可以删除node_modules重新开始)

        再次打开项目,问题就解决了。

        【讨论】:

          【解决方案5】:

          接受的答案仍然没有解决我的问题,然后我尝试更改语法位置 以前我使用以下命令将模块安装到 devDependencies

          npm i --save-dev moduleName
          

          然后我切换moduleName和--save-dev的位置,并且moduleName成功添加到package.json文件中

          npm i moduleName--save-dev
          

          然后用 moduleName 更新 package.json 文件。

          【讨论】:

            【解决方案6】:

            从 package.json 文件中的 devDependencies 中删除依赖项并仅使用 --save 再次安装对我有用

            【讨论】:

              【解决方案7】:

              我最近遇到了这个问题,发现无论出于何种原因,是 Atom 阻止了文件更新,即使文件没有打开也是如此。

              我关闭了编辑器,重新运行了我的 npm install,再次打开了编辑器,一切正常。

              【讨论】:

                【解决方案8】:

                我遇到了同样的问题。当我安装一些包时,它没有显示在 package.json 上。然后我删除了 package.json 文件并再次运行 npm init。之后它就可以工作了,我之前安装的包也在依赖项下。

                【讨论】:

                • 欢迎来到 StackOverflow!也许您可以添加更多详细信息,以更好地解释答案中最重要的部分。阅读How do I write a good answer? 了解更多信息。此外,一旦您获得更多声誉,您就可以将其发布为评论而不是答案,这会更合适。
                【解决方案9】:

                如果您打开了未保存的package.json,这可能会在 VSCode(或可能其他编辑器)中发生。

                文件正在实际更新但未在 IDE 中重新加载。 我想也许默认值是仅在文件未经编辑时才重新加载?或者也许我点击了一些东西来忽略警告。

                【讨论】:

                • (所以在这种情况下,'save-dev' 是一个红鲱鱼)
                • (注意:Save All 的快捷方式在 VSCode 和 VS 中是不同的)
                • 谢谢,为我修好了。
                【解决方案10】:

                您可能首先要检查您的配置(npm config ls 命令或~/.npmrc 文件)。 我有link=true

                在 5.5.1 版本中,当 --save 处于活动状态时,此选项似乎被忽略。 鉴于 --save-dev 取代了 --save链接模式 再次处于活动状态。

                所以对我来说,好像--save 覆盖了--link,而--save-dev 又覆盖了--save-dev

                【讨论】:

                  【解决方案11】:

                  我试图安装 gruntjs 使用 "npm install --save grunt-sass" 但 package.json 不会更新

                  我做了上面提到的一切,但没有运气。但有趣的是,如果我尝试添加一个包说“下划线(npm install --save underscore)”,儿子就会得到更新。我不确定这是否是 nam 本身的问题。我确实是作为超级用户安装的。

                  【讨论】:

                    【解决方案12】:

                    我能够解决这个问题的唯一方法是使用npm install --save-dev moduleName 而不是npm install moduleName --save-dev。不过,使用npm install moduleName --save 对我来说效果很好。只有当我使用--save-dev 时,我必须把它放在moduleName 之前。我希望这对任何人都有帮助。

                    【讨论】:

                      【解决方案13】:

                      我尝试了上述答案中所述的所有命令,但成功安装了npm-upgrade 包。

                      npm i -g npm-upgrade 然后 npm-upgrade

                      【讨论】:

                        【解决方案14】:

                        我有一个.npmrc 文件,它使用内部构建的npm api 来获取包。我的问题是我没有连接到我公司的VPN

                        【讨论】:

                          【解决方案15】:

                          使用 express 生成器后,我使用 --s 安装了一些包,但没有一个添加到 package.json。

                          然后我删除了 package.json 并运行 npm init 并全部添加而无需再次安装

                          【讨论】:

                            【解决方案16】:

                            对我来说,问题是我从 notepad++ 复制了命令,它可能有特殊字符,或者是空格,它没有更新我的 package.json。

                            例如不工作; npm install --save debug pug jwt-simple method-override mongoose

                            确保在安装时清理命令行,例如每个模块之间的任何空格,因为其中可能还有特殊字符,具体取决于您的编码。

                            当我将其更正后,它起作用了。

                            npm install --save debug pug jwt-simple method-override mongoose

                            另外,请确保在运行命令时 package.json 没有在编辑器中打开,因为并非所有编辑器都能优雅地处理此问题。

                            【讨论】:

                              【解决方案17】:

                              Mustafah ELBanna 的回答帮助了我,但我想为像我这样的其他新手扩展他的回答。如果我错过了重要的事情,请纠正我。

                              如果您删除-g 标志,则该模块不会为您的机器全局安装,而只会在您的项目中本地安装。如果您还希望它全局安装,请再次执行相同的命令,但现在使用 -g 而不是 --save-dev,如下所示:

                              npm install --save-dev [packagename]

                              npm install -g [packagename]

                              在我看来,在一行中调用-g--save 时可能会出错。

                              但同样,我是新手,我感谢任何想要改进/纠正我的答案的人。

                              【讨论】:

                                【解决方案18】:

                                导航到 JSON 文件 -> 右键单击​​属性 -> 删除“只读”标志。

                                【讨论】:

                                  【解决方案19】:

                                  我在那里有 -g 标志,当我删除它时,它按预期工作......

                                  【讨论】:

                                  • 也为我工作。但这是为什么呢?如果我想全局添加一个包怎么办?
                                  【解决方案20】:

                                  我的 package.json 中有一个语法错误导致我出现这种情况!

                                  【讨论】:

                                    【解决方案21】:

                                    我也有这个问题,这让我发疯了。

                                    最终修复它的是运行npm init。这在我的 package.json 中添加了一堆东西,但之后 --save-dev 按预期工作。即使我删除了npm init 添加的所有新内容,--save-dev 仍然有效。

                                    【讨论】:

                                    • 是的,这在 Ubuntu 14.04 上对我有用。谢谢你
                                    • 也为我工作。甚至没有在我现有的 package.json 中添加任何内容
                                    • Google 把我带到了这里...我尝试安装这样的包:npm i -s <package>...package.json 中的“依赖项”字段未更新...我打错了 :) ... -s 必须是 -S(大写)。
                                    • 我遇到了这个问题,发现它来自我在服务器上工作的事实。我将我的项目移到本地,现在一切正常。
                                    猜你喜欢
                                    • 2016-08-18
                                    • 2021-11-11
                                    • 1970-01-01
                                    • 2016-01-08
                                    • 1970-01-01
                                    • 2016-10-02
                                    • 2018-01-04
                                    • 2020-10-22
                                    • 1970-01-01
                                    相关资源
                                    最近更新 更多