2015-07-27 4 views
0

Я ноб с узлом и выражением, и когда я запускаю свое приложение, у меня есть эта ошибка. Любые решения? Я считаю, что эта ошибка здесь «app.use (express.static (пользователь)); но я не уверен.express TypeError: undefined не является функцией

var express = require('express'); 
var http = require('http'); 
var path = require('path'); 

var app = express(); 

// modulos 
var home = require('./controllers/home'); 
var model = require('./models'); 
var user = require('./controllers/user'); 

// all environments 
app.set('port', process.env.PORT || 3005); 
app.set('views', __dirname + '/layouts'); 
app.set('view engine', 'jade'); 
app.use(express.favicon()); 
app.use(express.logger('dev')); 
app.use(express.bodyParser()); 
app.use(express.methodOverride()); 
app.use(app.router); 
app.use(express.static(path.join(__dirname, 'public'))); 
app.use(express.static(user)); 

// development only 
if ('development' == app.get('env')) { 
    app.use(express.errorHandler()); 
} 

// rutas 
app.use(home); 

Ошибка

Экспресс 500 TypeError: не определено не является функцией

at Object.posix.isAbsolute (path.js:479:15) 
at posix.normalize (path.js:461:26) 
at SendStream.root.SendStream.from (/Applications/XAMPP/xamppfiles/htdocs/gestor/angular/jordi/node_modules/express/node_modules/send/lib/send.js:116:16) 
at Object.staticMiddleware [as handle] (/Applications/XAMPP/xamppfiles/htdocs/gestor/angular/jordi/node_modules/express/node_modules/connect/lib/middleware/static.js:79:8) 
at next (/Applications/XAMPP/xamppfiles/htdocs/gestor/angular/jordi/node_modules/express/node_modules/connect/lib/proto.js:190:15) 
at resume (/Applications/XAMPP/xamppfiles/htdocs/gestor/angular/jordi/node_modules/express/node_modules/connect/lib/middleware/static.js:60:7) 
at SendStream.error (/Applications/XAMPP/xamppfiles/htdocs/gestor/angular/jordi/node_modules/express/node_modules/connect/lib/middleware/static.js:73:37) 
at SendStream.emit (events.js:107:17) 
at SendStream.error (/Applications/XAMPP/xamppfiles/htdocs/gestor/angular/jordi/node_modules/express/node_modules/send/lib/send.js:147:51) 
at SendStream.onStatError (/Applications/XAMPP/xamppfiles/htdocs/gestor/angular/jordi/node_modules/express/node_modules/send/lib/send.js:248:48) 
at /Applications/XAMPP/xamppfiles/htdocs/gestor/angular/jordi/node_modules/express/node_modules/send/lib/send.js:320:26 
at FSReqWrap.oncomplete (fs.js:95:15) 

контроллеры/пользователь/index.js

// JavaScript Document 
var express = require('express'); 
var app = module.exports = express(); 

app.set('views', __dirname + '/views'); 

app.get('/user/new', function(request, response) { 

    response.render('new'); 

}); 
+1

Что в './Контроллеры/user'? – idmean

+0

Служебные файлы, такие как изображения, CSS, JavaScript и другие статические файлы, выполняются с помощью встроенного промежуточного программного обеспечения в Express - express.static. – Vishnu

+0

Вы хотите использовать 'user.js' как статический файл? – Vishnu

ответ

1

Нет необходимости в этой линии (app.use(express.static(user));).

Вы определяете новое приложение в controller/user/index.js.

Эти параметры, которые вы установили, не будут установлены в основное приложение. измените код, как показано ниже.

основные server.js

var user = require('./controllers/user')(app); 

контроллеры/пользователь/index.js

// JavaScript Document 
module.exports = function (app){ 

    app.set('views', __dirname + '/views'); 

    app.get('/user/new', function(request, response) { 

    response.render('new'); 

    }); 
} 
+0

Невозможно GET/user/new –

+0

'require ('./ controllers/user') (приложение);' изменить эту строку до 'app.use (home);' – Vishnu

1
app.use(express.static(path.join(__dirname, 'controllers/user.js'));