Javascript 个导入对象或函数的 Intellij 调试器控制台
Intellij Debugger Console for Javascript imported objects or functions
我有一个正在 Intellij 中调试的 Jest 文件。
import { screen, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
describe('<SamplePage />', () => {
afterEach(() => {
jest.clearAllMocks();
});
it('Correct text in SampleForm', () => {
renderPage();
expect(screen.getByRole('heading')).toHaveTextContent(
"Text to check",
);
});
});
然后我通常在 expect() 行放置一个断点,以便到那时视图已经呈现。到达断点后,我打开 调试器控制台 并通过测试各种语句开始使用测试 api。但是,当我尝试调用 screen.debug():
时,调试器控制台 中立即出现 错误
虽然自动完成功能在屏幕的调试器中工作:
我一直在使用的解决方法是将导入的对象屏幕分配给变量 x。然后当我到达断点时,我可以使用 x 变量作为屏幕并调用各种方法,如调试或 getByRole。
然而,这很麻烦,因为可能有多个我想要探索的导入对象,并且将它们中的每一个分配给一个临时变量是不可扩展的。有人知道如何在 Intellij 中解决这个问题吗?
在调试期间评估代码时未定义的变量(screen
)是由导入对象的奇怪方式转译+源映射中缺少名称映射引起的:如果在 transpiling/obfuscating 时重命名变量,并且没有提供适当的名称映射,调试器将无法将源代码中的变量与 VM 中的变量进行匹配。
在由 webpack babel/built 转译的模块中评估 ES6 导入时存在一些已知问题。详情请参阅 https://github.com/webpack/webpack/issues/3957, https://github.com/babel/babel/issues/1468。很遗憾,无法解决 IDE 端的问题。
我有一个正在 Intellij 中调试的 Jest 文件。
import { screen, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
describe('<SamplePage />', () => {
afterEach(() => {
jest.clearAllMocks();
});
it('Correct text in SampleForm', () => {
renderPage();
expect(screen.getByRole('heading')).toHaveTextContent(
"Text to check",
);
});
});
然后我通常在 expect() 行放置一个断点,以便到那时视图已经呈现。到达断点后,我打开 调试器控制台 并通过测试各种语句开始使用测试 api。但是,当我尝试调用 screen.debug():
时,调试器控制台 中立即出现 错误虽然自动完成功能在屏幕的调试器中工作:
我一直在使用的解决方法是将导入的对象屏幕分配给变量 x。然后当我到达断点时,我可以使用 x 变量作为屏幕并调用各种方法,如调试或 getByRole。
然而,这很麻烦,因为可能有多个我想要探索的导入对象,并且将它们中的每一个分配给一个临时变量是不可扩展的。有人知道如何在 Intellij 中解决这个问题吗?
在调试期间评估代码时未定义的变量(screen
)是由导入对象的奇怪方式转译+源映射中缺少名称映射引起的:如果在 transpiling/obfuscating 时重命名变量,并且没有提供适当的名称映射,调试器将无法将源代码中的变量与 VM 中的变量进行匹配。
在由 webpack babel/built 转译的模块中评估 ES6 导入时存在一些已知问题。详情请参阅 https://github.com/webpack/webpack/issues/3957, https://github.com/babel/babel/issues/1468。很遗憾,无法解决 IDE 端的问题。