【发布时间】:2015-02-04 08:23:48
【问题描述】:
我有以下代码:
var port = request.app.settings.port || 3000;
这会引发错误:
TypeError: Cannot read property 'settings' of undefined
at forceLogin (/home/projects/nodejs/node_modules/connect-keycloak/middleware/protect.js:5:25)
at /home/jaec/WebstormProjects/punters/services-api/node_modules/connect-keycloak/middleware/protect.js:44:5
at call (/home/jaec/WebstormProjects/punters/services-api/node_modules/connect/lib/proto.js:210:7)
at next (/home/jaec/WebstormProjects/punters/services-api/node_modules/connect/lib/proto.js:154:5)
at Function.app.handle (/home/jaec/WebstormProjects/punters/services-api/node_modules/connect/lib/proto.js:157:3)
at Server.app (/home/jaec/WebstormProjects/punters/services-api/node_modules/connect/lib/connect.js:28:37)
at Server.emit (events.js:98:17)
at HTTPParser.parser.onIncoming (http.js:2113:12)
at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:122:23)
at Socket.socket.ondata (http.js:1971:22)
它没有选择默认值 3000 是否有原因?
【问题讨论】:
-
默认情况下
request没有名为app的属性...所以除非你添加它...我认为你犯了一些错误。 -
如果你想检查第一个选项并提供其他选项以防它不存在,你应该这样做 -
var port = ( request.app && request.app.settings && request.app.settings.port ) || 3000;它会首先检查request.app.settings.port的存在,但如果它分配 3000不在场。
标签: javascript node.js restify