【问题标题】:Error.stack references only to main.chunk.js instead of real file nameError.stack 仅引用 main.chunk.js 而不是真实文件名
【发布时间】:2023-03-30 01:17:01
【问题描述】:

我正在创建一个 React.js 应用程序,在其中我得到这样的堆栈跟踪:

let trace = new Error().stack;

应用是使用create-react-app创建的

将跟踪发送到服务器时,我得到了以下几行:

在 onBlur (http://localhost:3000/static/js/main.chunk.js:538:82)

在上面一行,onBlur 是正确的,但文件名不正确。

有没有办法获取在我的项目中命名的文件的名称,而不是 main.chunk.js(我假设它是由 webpack 创建的编译文件)?

【问题讨论】:

  • 您是否禁用了源映射生成?您应该已经看到生产构建的文件映射。见stackoverflow.com/questions/55904292/…
  • 在您发表评论之前不知道所谓的“源地图”,所以不,我没有禁用它
  • @YonatanNir 你在 package.json 中有什么版本的 react-scripts,你是否以 react-scripts start 开头(在 package.json 脚本中通常称为 start)?

标签: javascript reactjs webpack stack-trace


【解决方案1】:

您可以使用 npm package craco - craco 将允许您指定 webpack 选项,而无需弹出 react 应用程序。

您可以指定选项 devtool 来控制源代码 这是craco.config.js 保存行号的文件

module.exports = {
    webpack: {
      
        configure: {
            
            devtool: 'eval-source-map'

    }
    }
}

你需要将 package.json 启动脚本更新为

"start": "craco start"


function App() {

  function handleClick(e) {
    e.preventDefault();
    let trace = new Error().stack;
    console.log('The link was clicked.' , trace);
  }

return (
        <button onClick={handleClick} > Blur</button>
)
}

您将看到原始行号和文件名被保留。

【讨论】:

  • 我已经给出了这个答案的声誉,但没有实际测试它,所以我没有接受它。如果有人可以评论它是否有效,我可以知道它是否应该被接受
  • 不要使用crago,它是craco
  • @MuhZulzidan 感谢您的编辑 - 我更正了拼写。
  • 一年没有人看到哈哈
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
相关资源
最近更新 更多