我想不通,爲什麼我得到一個未定義這裏「應用」:未定義的變量
module.exports = {
application: require('../../app').service,
request: require('supertest')(this.application),
startSetup: setup(this.application)
};
它在(this.application)拋出了該請求:線。
我想不通,爲什麼我得到一個未定義這裏「應用」:未定義的變量
module.exports = {
application: require('../../app').service,
request: require('supertest')(this.application),
startSetup: setup(this.application)
};
它在(this.application)拋出了該請求:線。
呦可以試試這個:
var app = require('../../app').service;
module.exports = {
application: app,
request: require('supertest')(app),
startSetup: setup(app)
};
的問題是,this.application
還不存在。
您不能使用未定義的對象的內部零件(它僅在最終的}
之後定義)。
以下是您可以在Chrome控制檯上嘗試的示例。
你可以看到,因爲它沒有規定不能使用的類型。
Javascript不知道什麼是this.application
是。該對象尚未定義,因此不能在同一對象中定義的對象定義中使用屬性。
Webstorm解決它很好,那麼爲什麼如果你說這裏沒有範圍呢? – PositiveGuy
因爲webstorm只是解析你的文件,並試圖建議它認爲會起作用或幫助你輸入更少。 Webstorm不是一個JavaScript運行時。 – ThrowsException
但是Webstorm intellisense解決了應用程序的問題,因爲它能夠點擊它來查看它指的是什麼對象 – PositiveGuy
@ WeDoTDD並不意味着它是有效的,並且在運行時會起作用。事實上,它的工作原理是有效的,並且通過給予你未定義的東西來完成它應該做的事情。如果webstorm給你任何非定義的東西,那就錯了。 –
@KevinB是對的。我已經編輯了我的問題,以便更清楚地瞭解它並以現場示例複製您的案例。 – Gepser