在运行--save-dev之后,package.json
是否会出现简单或微妙的原因?这是我的命令:
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"
}
}
我确实收到安装我没有存储库字段或README的软件包的警告,但我认为这没有关系。
答案 0 :(得分:56)
我也有这个问题,这让我发疯了。
最终修复它的是npm init
。这为我的package.json添加了一堆东西,但之后--save-dev
按预期工作。即使我删除了npm init
添加的所有新内容,--save-dev
仍然有用。
答案 1 :(得分:7)
我有-g标志,当我删除它时,它按预期工作...
答案 2 :(得分:5)
导航到JSON文件 - >右键单击属性 - >删除“只读”标志。
答案 3 :(得分:4)
我最近遇到了这个问题,并且发现无论出于什么原因,即使没有打开文件,Atom也会阻止文件更新。
我关闭了编辑器,重新运行了我的npm安装,再次打开了编辑器,一切都应该如此。
答案 4 :(得分:3)
如果您有未保存的package.json
打开,则可能会在VSCode(或可能是其他编辑器)中发生这种情况。
文件 实际上正在更新但未在IDE中重新加载。 我想也许默认是只在文件未经编辑时重新加载?或者也许我点击某些内容忽略了警告。
答案 5 :(得分:2)
Mustafah ELBanna的回答帮助了我,但我想扩大他对其他新手的回答。如果我错过了重要的事情,请纠正我。
如果删除-g
标记,则不会为您的计算机全局安装该模块,而只会在项目的本地安装。如果您还希望全局安装,请再次执行相同的命令,但现在使用-g
代替--save-dev
,如下所示:
npm install --save-dev [packagename]
npm install -g [packagename]
在我看来,在一行中调用-g
和--save
时可能会出现问题。
但同样,我是新手,我感谢任何想改进/纠正我的答案的人。
答案 6 :(得分:1)
我正在尝试使用gruntjs “npm install --save grunt-sass”但是package.json不会更新
我做了上面提到的所有事情,但没有运气。但有趣的是,如果我尝试添加一个包“下划线(npm install --save underscore)”,儿子会更新。我不确定这是否是这样的问题。我确实以超级用户身份安装。
答案 7 :(得分:0)
只是想添加另一个可能的答案,事实证明这是我的解决方案。
验证您是否在角度项目的目录中。我不是,因此更改没有反映在我的package.json文件中。
答案 8 :(得分:0)
我遇到了同样的问题,因为@import
已被全局安装。
我必须先将其卸载
nodemon
然后将其作为开发依赖项本地安装
npm uninstall -g nodemon
然后npm install --save-dev nodemon
文件将被更新。有时,您的编辑器也可能会阻止文件更新,因此请确保在没有其他情况的情况下将其重新启动。
答案 9 :(得分:0)
这是我在Intellij上发生的
对于其他遇到此问题的人,您是否从现有项目中复制了项目?
如果是这样,请关闭Intellij并删除.idea
文件夹。 (您也可以删除node_modules
重新开始)
再次打开项目,此问题将得到解决。
答案 10 :(得分:0)
尽管接受的答案仍然无法解决我的问题,所以我尝试更改语法位置 以前,我使用以下命令将模块安装到devDependencies
npm i --save-dev moduleName
然后我切换moduleName和--save-dev的位置,并将moduleName成功添加到package.json文件中
npm i moduleName--save-dev
然后使用moduleName更新的package.json文件。
答案 11 :(得分:0)
从package.json文件中的devDependencies中删除依赖项并仅使用--save再次安装为我工作
答案 12 :(得分:0)
我遇到了同样的问题。当我安装了一些软件包时,它没有显示在package.json上。然后我删除了package.json文件并再次运行npm init。之后它正在运行,我之前安装的软件包也存在于依赖项下。
答案 13 :(得分:0)
您可能首先要检查配置(npm config ls
命令或~/.npmrc
文件)。
我有link=true
。
在版本5.5.1中,当 - save 处于活动状态时,似乎会忽略此选项。 鉴于 - save-dev 取代 - 保存,链接模式再次处于活动状态。
所以对我而言,事情恰好--save
覆盖了--link
,而--save-dev
又覆盖了addEventHandler
。
答案 14 :(得分:0)
我能够解决这个问题的唯一方法是使用npm install --save-dev moduleName
代替npm install moduleName --save-dev
。但是,使用npm install moduleName --save
对我来说很好。只有当我使用--save-dev
时,我才必须将它放在moduleName
之前。我希望这对任何人都有帮助。
答案 15 :(得分:0)
我尝试了上述答案中陈述的所有命令,但在安装npm-upgrade
包时取得了成功。
npm i -g npm-upgrade
然后
npm-upgrade
答案 16 :(得分:0)
我有一个.npmrc
文件,它使用内置的npm
api来获取包。我的问题是我与我公司的VPN
没有联系。
答案 17 :(得分:0)
在我使用快速生成器后,我安装了一些带有--s的软件包,但没有添加到package.json。
然后我删除了package.json并运行了npm init并且所有这些都添加了而无需再次安装
答案 18 :(得分:0)
对我来说,问题是我从记事本++中复制了命令,它可能在那里有特殊的字符,或者它是空格,而且它没有更新我的package.json。
e.g。不工作; npm install --save debug pug jwt-simple method-override mongoose
确保在安装时清理命令行,例如:每个模块之间的任何空格,因为根据您的编码,可能还有特殊的字符。
当我纠正它时,它起作用了。
npm install --save debug pug jwt-simple method-override mongoose
此外,请确保在运行命令时没有在编辑器中打开package.json,因为并非所有编辑都能正常处理此问题。
答案 19 :(得分:0)
我的package.json中有一个语法错误导致了这个问题!