2015-01-27 3 views
0

У меня есть рабочий код на моей локальной машине, но проблема с тем же кодом на сервере (Digital Ocean). У меня есть новая/чистая машина с Node v0.10.36 никаких других запущенных сервисов, никаких других портов не занято/не используется.Сбой сервера Express 4 сразу после загрузки файлов статики

После запуска npm start или node bin/www я вижу, что запуск сервера, но после того, как я захожу на сайт, сервер падает с ошибкой при слежении:

[email protected]:~/server# npm start 

> [email protected] start /root/server 
> node ./bin/www 

GET/304 129.279 ms - - 

events.js:72 
     throw er; // Unhandled 'error' event 
      ^
Error: spawn ENOENT 
    at errnoException (child_process.js:1011:11) 
    at Process.ChildProcess._handle.onexit (child_process.js:802:34) 

npm ERR! [email protected] start: `node ./bin/www` 
npm ERR! Exit status 8 
npm ERR! 
npm ERR! Failed at the [email protected] start script. 
npm ERR! This is most likely a problem with the server package, 
npm ERR! not with npm itself. 
npm ERR! Tell the author that this fails on your system: 
npm ERR!  node ./bin/www 
npm ERR! You can get their info via: 
npm ERR!  npm owner ls server 
npm ERR! There is likely additional logging output above. 
npm ERR! System Linux 3.13.0-43-generic 
npm ERR! command "/root/.nvm/v0.10.36/bin/node" "/root/.nvm/v0.10.36/bin/npm" "start" 
npm ERR! cwd /root/server 
npm ERR! node -v v0.10.36 
npm ERR! npm -v 1.4.28 
npm ERR! code ELIFECYCLE 
npm ERR! 
npm ERR! Additional logging details can be found in: 
npm ERR!  /root/server/npm-debug.log 
npm ERR! not ok code 0 
[email protected]:~/server# 

ответ

1

ENOENT Look here означает файл или каталог не существует.

В основном вы можете решить эту проблему, добавив абсолютный путь в определение статической папки.

app.use(express.static(__dirname + '/public')); 

Чтобы проверить, если папка существует вы можете использовать реальный путь:

console.log(fs.realpathSync(__dirname + '/public'); 
+0

может получить ту же самую ошибку на некоторых операционных системах, когда процесс не имеет права на чтение – Paul

+0

я изменил 'app.use (express.static (path.join (__ dirname, 'public'))); 'to' app.use (express.static (__ dirname + '/ public')); '=> снова работал на localhost, но сбой на сервере. В журнале консоли отображается текущий путь, и я уверен, что файлы существуют. –

+0

Вы пытались вывести realpath на сервер? – Bernhard

Смежные вопросы