ES模块脚本导致控制台提示variable not defined问题求助
控制台无法访问模块脚本变量的原因及解决办法
你遇到的问题是因为脚本用了type="module"属性——ES6模块会运行在独立的模块作用域中,模块内的变量默认不会暴露到全局(window对象),所以控制台直接输入变量名会提示未定义。
下面是几种解决方法:
手动暴露变量到全局
在main.js里把需要访问的变量挂载到window对象上:console.log("from main.js"); let sillyName = { number: 7 }; window.sillyName = sillyName; // 新增这行刷新页面后,控制台就能直接输入
sillyName查看值。切换控制台的执行上下文
Chrome和Firefox都支持切换到模块脚本的上下文:- Chrome:打开控制台,点击左上角的下拉菜单(默认显示
top),选择你的main.js对应的选项 - Firefox:在控制台的"调试器"面板找到
main.js,右键选择"在控制台中打开",此时控制台会切换到模块作用域,就能直接访问变量
- Chrome:打开控制台,点击左上角的下拉菜单(默认显示
用断点暂停执行查看变量
在main.js里添加debugger语句触发断点:console.log("from main.js"); let sillyName = { number: 7 }; debugger; // 新增这行页面运行到这里会自动暂停,此时控制台可以直接访问
sillyName,调试完点击继续按钮即可恢复页面运行。
内容的提问来源于stack exchange,提问作者user3425506
相关产品推荐
相关产品推荐

