NPM不';t安装模块依赖项
这是我在父项目中包含的模块的NPM不';t安装模块依赖项,npm,Npm,这是我在父项目中包含的模块的package.json: { "version": "0.0.1", "name": "module-name", "dependencies": { "express": "3.3.4", "grunt": "0.4.1", "grunt-contrib-compass": "0.4.0", "grunt-contrib-copy": "0.4.1", "grunt-contrib-cssmin": "0.4.1
package.json
:
{
"version": "0.0.1",
"name": "module-name",
"dependencies": {
"express": "3.3.4",
"grunt": "0.4.1",
"grunt-contrib-compass": "0.4.0",
"grunt-contrib-copy": "0.4.1",
"grunt-contrib-cssmin": "0.4.1",
"grunt-contrib-jshint": "0.6.3",
"grunt-contrib-requirejs": "0.4.1",
"grunt-contrib-uglify": "0.2.2",
"grunt-contrib-watch": "0.5.1",
"grunt-express-server": "0.4.1",
"grunt-karma": "0.4.5",
"grunt-regex-replace": "0.2.5",
"request": "2.25.0"
},
"scripts": {
"postinstall": "grunt install"
}
}
需要注意的一点是,该模块包含在私有回购中,我将其包含在父级
package.json
中,比如:“模块名”:“git”+ssh://git@myserver:user/module name.git“
您可能需要安装grunt cli,请在执行npm安装之前尝试以下操作:
sudo npm install -g grunt-cli
这修复了grunt不存在的问题,您还需要一个有效的grunt文件
来源:我怀疑您面临的问题是您的
包.json
文件与grunfile.js
文件不在同一目录中。当您运行grunt xxx
命令时,会收到如下错误消息:
Local Npm module "xxx" not found. Is it installed?
目前,解决方案是:
- 在与Gruntfile.js相同的目录中创建package.json
- 定义grunt项目所需的模块
- 执行
本地加载它们npm install
- 现在,所需的grunt命令应该可以工作了
很遗憾,我们不能从父npm模块(即同一项目的父目录中的package.json)加载grunt解析模块。讨论似乎表明,这样做是为了避免加载“全局”模块,但我认为我们想要的是从“我的项目”模块中加载。看起来您遇到了一个已经存在了很长一段时间但尚未解决的错误。在npm存储库中,此案例存在几个未决问题:
- npm安装应递归检查/安装依赖项(已关闭)
- 本地专用模块依赖项(已关闭)
另一种解决方案可能是(有点老套)将依赖项显式地列为第一级依赖项。这需要您维护列表,但实际上必须很少进行维护。我遇到了非常类似的问题,删除整个
节点模块
文件夹并重新安装对我来说很有效。从表演中学会了这个把戏
我在windows上安装干净的节点开发环境时收到此错误 为了解决这个问题,我进入了我的新项目目录(我刚刚用
yo
)并输入了两个命令:
npm安装-g grunt--save dev
这将为您的项目安装本地grunt依赖项。下一步:
npm安装
这将确保安装所有(新)项目依赖项
塔达 以防万一,有人正遭受这种困境,并且碰巧犯了与我同样的错误,以下是我的情况。在我的头撞到墙上一个小时后,我意识到我的json嵌套不正确,键“dependencies”在键“repository”中。
不用说,没有明显的错误,也没有安装任何模块。如果您继承了此代码,则可能是依赖项和版本被锁定,并且您有一个./npm-shrinkwrap.json文件 如果该文件中未列出您的依赖项,则永远不会使用
npm install
命令安装它
您需要手动安装软件包,然后运行
npm shrinkwrap
更新shrinkwrap文件。OP可能适用于旧版本的node。但是,节点4.4.1也面临同样的问题
它很可能链接到您正在使用的节点版本。尝试升级到最新版本。如果某些依赖项与节点版本不兼容,则它们不会以传递方式加载
我通过运行npm update
发现了这一点
升级到最新版本(4.4->5.9)后;这个问题得到了解决。我也有同样的问题。但是在同一台机器上,一个项目有一个很好的package.json,我的所有依赖项都成功地安装在这里。在另一个项目中,无论我做什么,都没有安装我的package.json依赖项。 我只是复制了package.json并粘贴到另一个项目中。成功了!
我发现的区别只是文件开头的空行。不知道或者它会影响任何事情,可能是其他问题。但是问题只是package.json文件。我正在使用windows机器
在我的例子中,它有助于删除
node\u模块
和package lock.json
之后,只需使用npm install重新安装所有内容,另一种解决方法是将其添加到模块
包.json
脚本部分
"preinstall": "npm install {Packages You depend on}"
这样做的目的是,它将安装模块所需的所有软件包,而您不会收到该错误。在旧节点版本中发生。使用最新版本的节点,如下所示:
$nvm使用8.0
$rm-射频节点\u模块
$npm安装
$npm i somemodule
编辑:还要确保
保存
例如:npm安装您的moduleName——保存
还要检查您的包名是否被正确接受:
错:
{
“名称”:“我的超赞套餐”
}
对的
{
“名称”:“我最棒的软件包名称”
}
值得一提,以确保您的依赖项应位于包.json的依赖项部分(与devdependency
相反)
我的问题与OP基本相同:
- 通过
“模块名”:“git”安装私有repo(我们称之为repo1
)+ssh://git@myserver:user/my repo name.git“
在其他repo中(我们称之为repo2
)
- 在
repo2
的node\u模块中,repo1
中没有一个包依赖项。
"preinstall": "npm install {Packages You depend on}"