Ubuntu 14.04上的MEAN堆栈突然停止工作

hyp*_*666 5 node.js npm gruntjs mean-stack ubuntu-14.04

嗯,这很糟糕,这是独家新闻:

我正在使用MEAN堆栈(mongodb,express,angular和nodejs)帮助一个朋友在网站项目上工作,我正在运行Ubuntu 14.04.我对Linux非常了不起,而且我是一位经验丰富的Web开发人员,但我的大多数经验都是使用LAMP堆栈.我一直在做这个MEAN堆栈项目,直到今晚.我的朋友今晚重新开始进行开发,我通过运行npm update帮助他们在Mac上刷新他们的节点环境(他们主要做前端HTML/CSS并且我做了完整的堆栈)并且项目在他们的comp上工作正常.确定我可以轻松刷新我的节点环境以获得更新的信息我尝试了同样的事情:

我试图更新我的节点和npm环境因为我已经这么做了几个月(我知道它很糟糕,我搞砸了,我承认了),我想我使用的是Node.js v 0.3.2.something ,在这混乱发生之前,没想到检查版本号.但是现在我得到了疯狂的随机错误集,未满足的依赖关系,我无法通过使用npm install来获取它们来解决未满足的依赖关系,而且我无法让grunt启动dev服务器,我尝试删除节点和npm并重新安装(现在运行nodejs 0.10.25)已运行apt-get update,apt-get install nodejs,apt-get install nodejs-dev,npm update,npm install等,但无济于事.

我超越了沮丧,超越沮丧,请帮忙!以下是我得到的一些错误/缺失依赖项的示例:

module.js:340
throw err;
      ^
Error: Cannot find module './helpers'
 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)
 at Object.<anonymous>            
 at Module._compile (module.js:456:26)
 at Object.Module._extensions..js (module.js:474:10)
 at Module.load (module.js:356:32)
 at Function.Module._load (module.js:312:12)
 at Module.require (module.js:364:17)
 npm ERR! weird error 8
 npm WARN This failure might be due to the use of legacy binary "node"
 npm WARN For further explanations, please read
 /usr/share/doc/nodejs/README.Debian
 npm ERR! not ok code 0
Run Code Online (Sandbox Code Playgroud)

当我尝试运行sudo grunt时,我得到了这个:

Loading "jshint.js" tasks...ERROR
>> Error: Cannot find module './name-stack.js'
Loading "grunt-karma.js" tasks...ERROR
>> Error: Cannot find module 'depd'
Warning: Task "jshint" not found. Used --force, continuing.

Running "concurrent:default" (concurrent) task
Loading "jshint.js" tasks...ERROR
>> Error: Cannot find module './name-stack.js'
Loading "jshint.js" tasks...ERROR
>> Error: Cannot find module './name-stack.js'
Loading "grunt-karma.js" tasks...ERROR
Loading "grunt-karma.js" tasks...ERROR
>> Error: Cannot find module 'depd'
>> Error: Cannot find module 'depd'

[Error:           /home/user/Projects/detrashed/node_modules/mongoose/node_modules/mongodb/node_modules/bson/build/Release/bson.node: invalid ELF header]
js-bson: Failed to load c++ bson extension, using pure JS version
[Error: /home/user/Projects/detrashed/node_modules/connect-  mongo/node_modules/mongodb/node_modules/bson/build/Release/bson.node: invalid ELF header]
js-bson: Failed to load c++ bson extension, using pure JS version

module.js:340
 throw err;
      ^
Error: Cannot find module './collection/batch/unordered'
  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)
  at Object.<anonymous> (/home/user/Projects/detrashed/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/collection.js:21:17)
  at Module._compile (module.js:456:26)
  at Object.Module._extensions..js (module.js:474:10)
  at Module.load (module.js:356:32)
  at Function.Module._load (module.js:312:12)
  at Module.require (module.js:364:17)
Run Code Online (Sandbox Code Playgroud)

多么尴尬.任何有关如何解开我的nodejs环境的帮助或见解都会非常有帮助,因为我要拔掉头发.提前致谢!

Sam*_*kes 5

首先,我很抱歉你陷入了这个烂摊子.部分原因是一个错误npm update- update不尊重语义版本控制 - 但遗憾的是它尚未修复并且一直在咬人.结果,任何人都不应该跑npm update,尤其是永远不会npm update -g.

此外,官方的Debian/Ubuntu软件包稍微滞后于当前的版本,并且npm installnode你从Debian获得的时候有一些令人讨厌的竞争条件.幸运的是,NodeSource提供了一些软件包< https://github.com/nodesource/distributions#usage-instructions >

sudo apt-get --purge remove nodejs nodejs-legacy curl -sL https://deb.nodesource.com/setup | sudo bash - sudo apt-get install -y nodejs nodejs-legacy node -v

这应该是最新的node,0.10.35.

然后更新 npm

sudo npm install -g npm@latest npm -v

这应该是最新的npm2.1.17(或更高版本).

现在恢复你的项目.首先,我会吹掉node_modules并运行一个npm install.如果您从中获得任何错误,请将完整的npm-debug.log文件发布为gist https://gist.github.com并在此处添加链接.

您可能需要重新安装全局软件包,bower并将grunt-cli其包含在PATH中:

sudo npm i -g bower grunt-cli

有一点需要注意的npm是,几乎所有的软件包都是非全局安装的; 如果您希望在命令行PATH中使用它,则只能全局安装软件包.