我有一个使用 SSR 的 Laravel / Vue 应用程序,所以让 JavaScript 运行服务器端和客户端。
我的代码中有一个错误,我正在检查user.id
用户对象何时为空。
如果这一直在客户端运行,我会在控制台中看到错误并轻松修复它。
然而,因为这是在v8js中运行的,所以我根本没有得到任何输出,只是为了定位和修复错误而反复试验。这让我想起了修复 IE6 中的 JS 错误——我不想重复!
我确实尝试了该getPendingException()
方法,但这只是给了我一个关于它已被弃用的警告。
注意会产生一些错误......
当我运行 webpack 时,会立即发现明显的语法错误。
一些错误会引发 V8JsScriptException:
if(foo.bar) {}
这会产生错误:
V8Js::compileString():86354: ReferenceError: foo is not defined
如果我将 foo 包装在一个函数中然后调用它:
function test() {
if(foo.bar) {}
}
test()
没有抛出异常,但返回的唯一输出是:
ReferenceError: foo is not defined
然而,这段用于我的 Vue 路由器的代码根本不产生任何输出:
import Vue from 'vue'
import Router from 'vue-router'
import routes from './routes'
Vue.use(Router)
export function createRouter () {
const router = new Router({
mode: 'history',
routes: routes
})
router.beforeEach(async (to, from, next) => {
if(foo.bar) {}
next()
})
return router
}
当我在浏览器中运行相同的代码时,控制台显示:
ReferenceError: foo is not defined
所以看起来 JS 正在创建一个错误 - 但不知何故 V8Js 并没有传递它。
为什么v8js中运行时vue router中的undefined error不抛出异常?