2017-04-05 172 views
0

我通常在Docker容器中開發Node應用程序,並將我的源代碼綁定到容器中,例如/usr/src/app。如果代碼拋出一個堆棧跟蹤,我得到的是這樣的:修改用於Docker容器的節點堆棧跟蹤路徑

TypeError: Cannot read property 'createElement' of undefined 
    at parseUrl (/usr/src/app/node_modules/auth0-lock/lib/utils/url_utils.js:6:31) 
    at extractClientBaseUrlOption (/usr/src/app/node_modules/auth0-lock/lib/core/index.js:425:42) 
    at Object.setup (/usr/src/app/node_modules/auth0-lock/lib/core/index.js:110:20) 
    at setupLock (/usr/src/app/node_modules/auth0-lock/lib/core/actions.js:47:13) 
    at Auth0Lock.Base (/usr/src/app/node_modules/auth0-lock/lib/core.js:77:36) 

這是所有coold因爲只要節點都知道,它的運行在/ usr/src目錄/應用很有道理。這就是我們想要的 - 我們的應用程序不知道主機的任何信息。

但是,VS Code有一個非常方便的功能,它可以在其集成終端中分析路徑,並允許您單擊它們以打開源代碼。這在容器內不起作用,因爲主機上的路徑不正確。我需要'重寫'它(用於使用這個術語)/Users/shankie/project/node_modules/auth0-lock/lib/utils/url_utils.js

任何人都有類似的做法運氣?我可以同時在VS代碼和節點設想可行的解決方案......

回答

0

這不是內建的東西,但你可以通過改變Error原型有一些運氣:

請記住,一些方法和屬性都不是標準的 - 見:

或者,您可以創建在碼頭工人一個符號鏈接,使你擁有了它在同一個目錄中運行你的機器上 - 這也是一些選項,將需要對代碼進行任何更改。

+0

太好了,我沒想過修改原型。這是一個非常好的主意。我會在那列火車上做一些工作...... 我不認爲符號鏈接的方法會工作,因爲我在多個開發人員之間共享代碼(使用不同的路徑),但是對於某些使用案例來說這是個好主意。 –