修改在Docker容器中使用的节点堆栈跟踪path

我通常在Docker容器中开发Node应用程序,并将我的源代码绑定到容器中,例如在/usr/src/app 。 如果代码抛出一个堆栈跟踪,我得到如下所示:

 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) 

这是非常酷的,因为Node知道它在/ usr / src / app中运行。 这就是我们想要的 – 我们的应用程序不知道主机的任何信息。

但是,VS Code在分析集成terminal中的path时有一个非常方便的function,允许您点击它们来打开源代码。 这在容器内不起作用,因为主机上的path不正确。 我需要'重写'它(使用这个术语)到/Users/shankie/project/node_modules/auth0-lock/lib/utils/url_utils.js

任何人都有类似的运气吗? 我可以在VS Code和Node中设想可能的解决scheme…

这不是内置的,但你可能有一些运气,通过更改Error原型:

请记住,一些方法和属性不是标准的 – 请参阅:

或者,你可以在Docker中创build一个符号链接,这样你就可以在你的机器上运行相同的目录 – 这也是一个选项,不需要修改代码。