2013-09-25 10 views
11

Buduję aplikację węzła za pomocą programu Expressjs i próbuję uruchomić aplikację węzła na świeżo zainstalowanym systemie Ubuntu (właśnie zainstalowałem git i węzeł v 0.10. 19).Węzeł roboczy (express) na linuksie produkuje Błąd: spawn EACCES

Niestety jednak, dostaję następujący komunikat o błędzie podczas próby uruchomienia aplikacji w terminalu:

Events.js:72 
    throw er; // unhandled 'error' event 

Error: spawn EACCES 

biegnę na porcie 3000 i używam sudo. Próbowałem także jako root, a także grałem z różnymi portami powyżej progu 1024.

Aplikacja jest tylko podstawowe Expressjs i używam metody domyślnej do otwierania gniazdo aplikacji:

app.listen(3000); 

jestem noob Linux więc każda pomoc jest mile widziana. aplikacja jest po prostu świetna w systemie Windows.

Podstawowy kod serwera:

var express = require('express') 
    , app = express() 
    , fs = require ('fs') 
    , lingua = require('lingua'); 

    process.env.NODE_ENV = 'development'; 

    app.configure(function(){ 
     app.set('view engine', 'jade'); 
     app.set('views', __dirname + '/views'); 
     app.setMaxListeners(100); 
     app.use(express.bodyParser()); 
     app.use(express.methodOverride()); 
     app.use(express.static(__dirname + '/public')); 
     app.use(express.favicon(__dirname + '/public/core/favicon.ico')); 
     app.use(lingua(app, { 
      defaultLocale: 'translation_', 
      storageKey: 'lang', 
      path: __dirname+'/public/translations/', 
      cookieOptions: { 
       httpOnly: false,   
       expires: new Date(Date.now(-1)), 
       secure: false 
      } 
     })); 
     app.use(app.router); 
     app.locals.pretty = true; 
    }); 

    app.configure('development', function(){ 
     app.enable('verbose errors'); 
     app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
    }); 

    app.configure('production', function(){ 
     app.disable('verbose errors'); 
     app.use(express.errorHandler()); 
    }); 

    require('./lib/routing/routing')(app,{ verbose: !module.parent }); 


    app.listen(3000); 

można przetestować samemu instalując: npm install mediacenterjs

+0

to jeszcze zdarzyć z 'require (http) .createServer (app) .listen (3000)' – Plato

+0

Testowanie to teraz :) Chwileczkę! – jansmolders86

+0

oh przepraszam, zapomniałem cytaty. Nie mogę już edytować mojego poprzedniego komentarza, ale powinien on brzmieć: 'require ('http'). createServer (app) .listen (3000)'. nie musisz instalować http, jest on wbudowany. – Plato

Odpowiedz

17

Rozwiązałem go przez ustawienie uprawnień do plików poprawnie.

Działa według ustawień uprawnień do odczytu/zapisu i wykonywania.

sudo chmod -R a+rwx APPNAME/file 
+0

Naprawiono problem z błędem eaccess 3 podczas zapisywania pliku. Odczyt działał idealnie, ale prawa dostępu do folderów w łańcuchu były nieprawidłowe. – gspatel

+3

Może to rozwiązać problem, ale powoduje również, że APPNAME WRITABLE jest wszystkim, co na serwerach jest OGROMNYM zagrożeniem bezpieczeństwa. – gerasalus

+1

@gerasalus, masz rację, zmieniłem odpowiedź, aby ustawić prawa tylko pliku. Które również działało dobrze. Dzięki! – jansmolders86

Powiązane problemy