2016-10-12 6 views
1

Я просто пытаюсь запустить коды образца из развивающихся Microservices с Node JS, и он говорит:throw new TypeError ('app.use() требует функций промежуточного слоя');

var express = require('express') 
var bodyParser = require('body-parser') 
var cookieParser = require('cookie-parser') 
var methodOverride = require('method-override') 
var seneca = require('seneca')() 
var argv = require('optimist').argv 
var app = express() 
var cors = require('cors') 
var routes = require('./../routes/index') 
let path = require('path') 
var webpack = require('webpack') 
var webpackMiddleware = require('webpack-dev-middleware') 
var config = require('./../webpack.config.js') 

var compiler = webpack(config) 

var conf = { 
    port: argv.p || 7770 
} 

app.engine('jsx', require('express-react-views').createEngine()) 
app.set('port', conf.port) 
app.use(cors()) 
app.use('/public', express.static(path.join(__dirname,'./../public'))) 
app.use('/views', express.static(path.join(__dirname, './../views'))) 
app.use(webpackMiddleware(compiler)); 
app.use(cookieParser()) 
app.use(express.query()) 
app.use(bodyParser.urlencoded({extended: true})) 
app.use(methodOverride()) 
app.use(bodyParser.json()) 
app.use(express.static('public')) 
app.use(seneca.export('web')) // Error line 

seneca.use('./../lib/registerAPI') 

app.use('/', routes) 

module.exports = app 

но Im получаю сообщение об ошибке, которое говорит:

/home/quocdinh/workspace/ECommerce/ass-ECommerce/node_modules/express/lib/application.js:177 
    throw new TypeError('app.use() requires middleware functions'); 
    ^
TypeError: app.use() requires middleware functions 
    at EventEmitter.use (/home/quocdinh/workspace/ECommerce/ass-ECommerce/node_modules/express/lib/application.js:177:11) 
    at Object.<anonymous> (/home/quocdinh/workspace/ECommerce/ass-ECommerce/src/app.js:33:5) // --> line: app.use(seneca.export('web')) 

Я пытался найти решения но неэффективны.

Я попытался добавить

app.use(require('seneca-web')) 

, но все еще не может быть

Я пытался понизить версию версии узла, который я должен 4.0 от 6.0, но все-таки получил ту же ошибку

+0

Убедитесь, что вы используете ту же самую версию express (как указано в файле 'package.json') как любой учебник, за которым вы следуете. –

+0

Это экспресс-версия в моем пакете. Json («express»: «~ 4.11.2») –

+0

Вам нужно убедиться, что вы установили 'npm install' ту же самую версию экспресс, которая используется в учебнике. Примеры приложений, построенных с использованием express 2, обычно не будут выполняться с использованием экспресс-памяти 3 или 4 и наоборот. –

ответ

0

Я также изучаю микросервисы с сенекой.
Использование экспресс-версии ~ 4.13.4 и версия seneca^2.0.0 работает для меня.

Более подробную информацию можно найти в Сенека Getting Started примеров по этому адресу: https://github.com/senecajs-attic/getting-started

Посмотрите на свой файл package.json. Надеюсь, поможет!

+0

Спасибо, это сработало –

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

  • Нет связанных вопросов^_^