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



我通常在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)

这都是coold,这是有道理的,因为据Node所知,它运行在/usr/src/app中。毕竟,这就是我们想要的 - 我们的应用程序对主机一无所知。

但是,VS Code 有一个非常方便的功能,它可以解析其集成终端中的路径,并允许您单击它们以打开源代码。这在容器中不起作用,因为主机上的路径不正确。我需要"重写"它(以失败地使用术语(为类似/Users/shankie/project/node_modules/auth0-lock/lib/utils/url_utils.js

有人有幸

做类似的事情吗?我可以在VS代码和节点中设想可能的解决方案...

这不是

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

  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error
  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype

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

  • https://nodejs.org/api/errors.html

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

最新更新