调试使用ES6模块的JavaScript代码

调试使用ES6模块的JavaScript代码,javascript,debugging,module,names,inspect,Javascript,Debugging,Module,Names,Inspect,TL;DR:如何从调试器访问ES模块中定义的变量/函数/名称 更多内容:我是一个相对有经验的JavaScript程序员,但对模块还不熟悉。我已经在MDN上学习了教程:。他们在这里有一组很好的例子: 在该集合中,例如在“基本模块”示例中,(此处为live code:),在文件modules/square.js中有一个名为random的函数。假设我想在调试器中执行该函数,只是为了尝试它,或者因为它是我的代码,我想测试/调试它,或者我想向其他程序员演示该函数的功能。您希望在REPL或调试器中执行的所有

TL;DR:如何从调试器访问ES模块中定义的变量/函数/名称

更多内容:我是一个相对有经验的JavaScript程序员,但对模块还不熟悉。我已经在MDN上学习了教程:。他们在这里有一组很好的例子:

在该集合中,例如在“基本模块”示例中,(此处为live code:),在文件
modules/square.js
中有一个名为
random
的函数。假设我想在调试器中执行该函数,只是为了尝试它,或者因为它是我的代码,我想测试/调试它,或者我想向其他程序员演示该函数的功能。您希望在REPL或调试器中执行的所有操作。有办法吗?我尝试过Firefox调试器和Chrome调试器,但都没有成功

回到前模块时代,代码将被放入全局名称空间(使访问变得容易),或者被锁定在IIFE中(使访问不可能),或者可能被锁定在一些自制的模块系统中(访问取决于)。我希望新的模块系统仍然允许调试器访问模块内的名称

谢谢。

上面写着:

最后但并非最不重要的一点是,让我们明确一点——模块功能被导入到单个脚本的作用域中——它们在全局作用域中不可用。因此,您将只能访问它们导入到的脚本中的导入功能,例如,您将无法从JavaScript控制台访问它们。您仍然会在DevTools中看到语法错误,但是您将无法使用一些您可能期望使用的调试技术

以前面的示例为例,您需要从该函数可见的范围(即导入该函数的位置)调用该函数:

从'path/to/square.js'导入{random}
调试器;//您应该能够从这里调用random()

您是否尝试了VsCode中的扩展?无需再在代码中编写“debugger;”,只需设置launch.json文件,像任何常用IDE一样在一旁放置一个断点,就可以调试javascript模块。这里列出了一些备选方案,谢谢@Renaud。我在文件中读到了这一点,但我希望会更好。您列出的备选方案很有帮助。