2013-09-25 83 views
11

Tôi đang xây dựng một ứng dụng nút có sử dụng Expressjs và tôi đang cố gắng chạy ứng dụng nút trên Ubuntu mới cài đặt (tôi vừa cài đặt git và nút v 0.10. 19).Nút chạy (Express) trên linux tạo Lỗi: sinh EACCES

Đáng buồn là mặc dù, tôi nhận được lỗi sau khi cố gắng chạy các ứng dụng trong thiết bị đầu cuối:

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

Error: spawn EACCES 

Tôi đang chạy trên cổng 3000 và tôi đang sử dụng sudo. Tôi cũng đã cố gắng như là người chủ và tôi cũng chơi xung quanh với các cổng khác nhau trên ngưỡng 1024.

Ứng dụng chỉ là Expressjs cơ bản và tôi đang sử dụng phương pháp mặc định để mở các ổ cắm ứng dụng:

app.listen(3000); 

tôi là một Noob Linux vì vậy bất kỳ sự giúp đỡ được đánh giá cao. ứng dụng hoạt động tốt trên Windows bằng cách này.

Mã máy chủ cơ bản:

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); 

Bạn có thể kiểm tra nó ra cho mình bằng cách cài đặt: npm install mediacenterjs

+0

hiện nó vẫn xảy ra với 'require (http) .createServer (app) .listen (3000)' – Plato

+0

Kiểm tra ngay bây giờ :) Một khoảnh khắc! – jansmolders86

+0

oh xin lỗi tôi đã quên trích dẫn. tôi không thể chỉnh sửa bình luận trước đó của tôi nữa nhưng nó nên đọc: 'require ('http'). createServer (app) .listen (3000)'. bạn không cần phải cài đặt http, được xây dựng trong. – Plato

Trả lời

17

Tôi giải quyết nó bằng cách thiết lập các quyền tập tin một cách chính xác.

Tính năng này hoạt động theo cài đặt quyền đọc/ghi và thực thi.

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

Đã khắc phục sự cố của tôi với lỗi eaccess 3 khi ghi tệp. Đọc đã làm việc một cách hoàn hảo nhưng các quyền trên các thư mục trong chuỗi không đúng. – gspatel

+3

Mặc dù điều này có thể khắc phục được sự cố, nhưng nó cũng làm cho APPNAME WRITABLE đối với mọi người, mà trên máy chủ là một nguy cơ bảo mật HUGE. – gerasalus

+1

@gerasalus, bạn nói đúng, tôi đã thay đổi câu trả lời của mình để thiết lập quyền của tập tin. Mà cũng làm việc tốt. Cảm ơn! – jansmolders86

Các vấn đề liên quan