2016-10-12 25 views
1

我只是想從節點JS開發微服務運行示例代碼,並說:拋出新的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 

但是我得到一個錯誤,指出:

/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

這是我的package.json中的快速版本(「express」:「〜4.11.2」) –

+0

您需要確保'npm install'是本教程中使用的相同版本的express。使用express 2構建的示例應用程序通常不會使用express 3或4運行乾淨,反之亦然。 –

回答

0

我也在與塞內卡學習微服務。
使用快遞版本〜4.13.4和塞內卡版本^ 2.0.0適合我。

更多信息可以在塞內卡入門例子在此URL中找到: https://github.com/senecajs-attic/getting-started

看看他們的package.json文件。希望能幫助到你!

+0

謝謝,它工作 –

相關問題