Nœud en cours d'exécution (express) sur linux génère l'Erreur: spawn EACCES
Je suis en train de construire un nœud de l'application avec l'aide de Expressjs et je suis en train de lancer mon nœud de l'application sur un fraîchement installé Ubuntu (je viens d'installer git et le nœud v 0.10.19).
Malheureusement, j'obtiens l'erreur suivante lorsque vous essayez d'exécuter l'application dans le terminal:
Events.js:72
throw er; //unhandled 'error' event
Error: spawn EACCES
Je suis en cours d'exécution sur le port 3000 et je suis en utilisant sudo. J'ai aussi essayé en tant que root et j'ai aussi joué avec différents ports supérieurs à 1024 seuil.
L'application est juste de base Expressjs et je suis en utilisant la méthode par défaut pour l'ouverture de l'application socket:
app.listen(3000);
Je suis un noob de Linux de sorte que toute aide est très appréciée. l'application fonctionne tout simplement génial sur Windows.
Le serveur de base code:
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);
Vous pouvez le tester par vous-même l'installation: npm install mediacenterjs
require(http).createServer(app).listen(3000)
Tester maintenant 🙂 Un moment svp!
oh désolé, j'ai oublié les guillemets. je ne peux pas éditer mon commentaire précédent, mais plus il faut lire:
require('http').createServer(app).listen(3000)
. vous n'avez pas besoin d'installer http, ses construit en.Merci mais l'erreur reste saldy.
Putain! Mon seul autre supposition est que vous n'êtes pas réellement l'exécuter en tant que root. Faites-vous
sudo node app.js
? Ne sudo touch /etc/foo.test
créer un fichier /etc/foo.test
sans un problème d'autorisations?OriginalL'auteur jansmolders86 | 2013-09-25
Vous devez vous connecter pour publier un commentaire.
Je l'ai résolu en définissant les autorisations de fichier correctement.
Il fonctionne par les paramètres de lecture/écriture et d'exécution des autorisations.
Même si cela peut résoudre un problème, il rend également APPNAME modifiable par tout le monde, sur les serveurs est un ÉNORME risque de sécurité.
vous avez raison, j'ai changé ma réponse à une définition des droits de juste le fichier. Qui aussi a très bien fonctionné. Merci!
L'autorisation d'écriture n'est pas nécessaire. Vous avez seulement besoin
chmod a+x /path/to/file
OriginalL'auteur jansmolders86