使用 webpack 的 Terser 插件缩小我的 JavaScript 应用程序后,此 catch 函数无法在浏览器中正确运行
.catch((error)=> {
vm.loginError = true;
vm.loading = false;
if (!error || !error.error){return};
if (error.error.indexOf('user exists')) {
<!-- expecting this line to run when error.error contains "user exists" but this line is never executed -->
vm.emailTakenError = true;
} else {
vm.serverGeneralError = true;
}
});
在此示例中,后端发送一个错误对象,其中包含设置为“用户存在”的错误属性。
{"status":"error","error_message":"user exists","error":"user exists"}
浏览器应该能够解析错误对象并读取error.error,但它不能。
使用未缩小的代码,脚本可以正常工作,并且浏览器会执行“vm.emailTakenError = true”行。
在浏览器控制台命令行中,缩小后,返回 error.error 给出此错误(Chrome 开发工具):
未捕获的 ReferenceError:错误未在 eval 处定义(eval at (signup.ts:92), :1:1)
奇怪的是,在 Chrome 开发工具中使用缩小代码上的源映射,控制台可以使用鼠标悬停解析 error.error 属性,但不能作为 Watch 或浏览器窗口或任何其他方法。
同样神秘的是,这条线永远不会运行:
if (!error || !error.error){return};
该代码在 Firefox 中也失败了。
我对缩小器、代码或其他东西有问题吗?如何解决这个问题?