修改节点堆栈跟踪路径以在Docker容器中使用

时间:2017-04-05 14:38:06

标签: node.js docker visual-studio-code

我通常在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有一个非常方便的功能,它可以解析集成终端中的路径,并允许您单击它们以打开源。这在容器内部不起作用,因为主机上的路径不正确。我需要'重写'它(将术语丢失)用于/Users/shankie/project/node_modules/auth0-lock/lib/utils/url_utils.js

之类的东西

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

1 个答案:

答案 0 :(得分:0)

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

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

或者,您可以在Docker中创建一个符号链接,以便它在您的计算机上的同一目录中运行 - 这也是一些选项,不需要对代码进行任何更改。