TL;DR:如何从调试器访问 ES 模块中定义的变量/函数/名称?
更多背景信息:我是一位经验相对丰富的 JavaScript 程序员,但对模块还是个新手。我已经按照 MDN 上的教程进行操作:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules。他们在这里有一组很好的例子:https://github.com/mdn/js-examples/tree/master/modules https://github.com/mdn/js-examples/tree/master/modules
在该集合中,在“基本模块”示例中,(此处的实时代码:https://mdn.github.io/js-examples/modules/basic-modules/ https://mdn.github.io/js-examples/modules/basic-modules/)例如,有一个函数称为random
在文件中modules/square.js
。假设我想在调试器中执行该函数,只是为了尝试一下,或者因为它是我的代码并且我想测试/调试它,或者我想向另一个编码器演示该函数的作用。您期望在 REPL 或调试器中执行的所有操作。有没有办法做到这一点?我尝试过 Firefox 调试器和 Chrome 调试器,但没有成功。
回到前模块时代,该代码将被放入全局名称空间中(使访问变得容易),或者将被锁定在 IIFE 中(使访问变得不可能)或可能在一些自制的模块系统中(访问取决于)。我希望新的模块系统仍然允许调试器访问模块内的名称。
Thanks.
It says 在文档中 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules#Other_differences_between_modules_and_standard_scripts:
最后但并非最不重要的一点是,让我们明确这一点 - 模块功能被导入到单个脚本的范围内 - 它们在全局范围内不可用。因此,您只能在导入的脚本中访问导入的功能,而无法从 JavaScript 控制台访问它们。您仍然会收到 DevTools 中显示的语法错误,但您将无法使用您可能期望使用的一些调试技术。
要使用之前的示例,您需要从可见的范围(即导入该函数的范围)调用该函数:
import { random } from 'path/to/square.js'
debugger; // you should be able to invoke random() from here
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)