即使运行了npm install,npm Gulp依赖项仍然丢失

7

我有一个使用Gulp的项目。我将我的项目部署到了Ubuntu服务器上,现在想要编译资产(目前我的gulpfile只做这个)。安装了Node和npm后,我从项目根目录运行npm install来安装依赖项。package.json如下所示:

  ...},
  "devDependencies": {
    "bower": ">=1.3.12",
    "gulp": "^3.8.10",
    "gulp-concat": "^2.4.3",
    "gulp-less": "^2.0.1",
    "gulp-minify-css": "^0.4.3",
    "gulp-notify": "^2.2.0",
    "gulp-rename": "^1.2.0",
    "gulp-uglify": "^1.1.0"
  }...

检查项目根目录下的node_modules文件夹后,我发现每个依赖项都有一个对应的目录,表明它们已经被安装。但是当我运行gulp时,我会遇到如下所示的npm错误:
Error: Cannot find module 'through2'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)

这些似乎是我的项目依赖的依赖项(因为它们没有在我的gulpfile中引用),但为什么npm没有安装它们?

我可以手动安装每一个缺失的依赖项,但接下来我会遇到另一个类似的缺失依赖项的错误。

我该如何解决这个问题?


2
不回答你的问题,但提供一个建议:不要在生产服务器上进行资源编译。在本地构建资源,并将它们作为部署的一部分上传/同步。这样可以避免像这样的头痛,同时减少在另一个环境中安装和配置软件的需求。 - deefour
你的环境是什么,npm和node的版本是多少? - Preview
1个回答

20

解决方法是删除 node_modules 文件夹并重新运行 npm install

看起来初始安装由于某种原因部分失败了。


这个有效,不像尝试运行npm uninstall - Andrew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接