NodeJS部署错误

时间:2015-04-02 14:04:45

标签: node.js mongodb express socket.io

我在NodeJS中有一个项目。我已经构建了一个基于ExpressJS,SocketIO,MongoDB的框架,它在本地版本中运行良好。

我试图在DigitalOcean Droplet(Debian)上部署这个项目;我已经安装了所需的一切(npm,node,mongo)。它开始启动守护进程,我遇到了一个很大的错误。

要启动我的应用,我使用npm start以及以下脚本

 "scripts": {
   "start": "./node_modules/.bin/supervisor DEBUG=unicorn ./bin/www"
 }

然后它就像那样

Starting child process with 'node ./bin/www'
01:59:19 - info: Try to connect to MongoDB via Mongoose ...
01:59:19 - info: Loading Socket.io module ...
Option log level is not valid. Please refer to the README.
01:59:19 - info: Reboot system initialized (pre_starters)
01:59:19 - info: --------------------
01:59:19 - info: Unicorn (Black Mamba (0.0.4a))
01:59:19 - info: -> Welcome aboard !
01:59:19 - info: -> Your app is ready to use.
01:59:19 - info: --------------------
01:59:19 - info: Express server listening on port 8003

events.js:72
    throw er; // Unhandled 'error' event
          ^
Error: ENOENT, open 'logs/app.log'
Program node ./bin/www exited with code 8

所以我现在正在寻找一个解决方案超过3个小时,人们说这通常是因为端口很忙,我检查了他们使用的所有进程和端口,但什么都没发现。

我也尝试更改Express和SocketIO(80,8080,3000等)的端口,但它没有改变任何东西......

你还有其他想法吗?或者更好的神奇解决方案?谢谢大家;)

PS:我也从服务器上做了一个干净的npm install,从本地版本到服务器的软件包兼容性没有问题。

1 个答案:

答案 0 :(得分:3)

问题在于:

Error: ENOENT, open 'logs/app.log'

这意味着您的脚本正在尝试打开日志文件但失败了。由于错误未被捕获,脚本崩溃。

我的猜测是它没有在你假设的目录中启动(一个logs/作为子目录的目录)。因此,您应该确保您的脚本是在正确的目录中启动的,或者您应该使用日志文件的绝对路径。