Node.js使用Connect框架报Cannot read property 'use'错误求助
问题排查与修复方案
嘿,这个问题其实挺典型的——你把变量初始化的顺序搞反啦!
问题根源
在你的代码里,你先调用了app.use(doFirst)和app.use(doSecond),但这时候app变量还没被赋值成connect()的实例,它此时是undefined,自然就会抛出“Cannot read property 'use' of undefined”的错误。
JavaScript里变量声明会被提升,但赋值操作是严格按代码顺序执行的,所以在执行app.use()的时候,app还只是一个未赋值的变量,指向undefined。
修正后的代码
把var app = connect();移到调用app.use()的前面就可以解决问题了:
var connect = require('connect'); var http = require('http'); function doFirst(request, response, next) { console.log('bacon'); next(); } function doSecond(request, response, next) { console.log('tuna'); next(); } // 先初始化connect实例 var app = connect(); // 再注册中间件 app.use(doFirst); app.use(doSecond); http.createServer(app).listen(8080);
小建议
以后写代码可以养成把变量初始化放在靠前位置的习惯,能有效避免这类顺序问题~
内容的提问来源于stack exchange,提问作者rash
相关产品推荐
相关产品推荐

