在VS代码中使用节点填充程序调试React Native

时间:2017-07-13 15:12:42

标签: javascript node.js react-native visual-studio-code jest

我有一个React Native项目(从Ignite CLI 2.0.0默认样板文件创建),它需要对基于节点的软件包有一些依赖。

因此,我根据ReactNativify创建了transformers.jsbabel-transform.jsrn-cli.js。这基本上等同于普通.babelrc文件中的内容,并使用babel-plugin-rewrite-require交换Node对象,并用Browserify填充程序或空模拟替换它们。到目前为止,非常好。

现在问题是在Visual Studio代码(1.13.1)中调试它。我已经有了significant adventure(或者恐怖故事,如果你愿意的话)已经进行了RN调试,但是在将Node降级为7.10.1之后认为它已经运行了。

一切似乎进展顺利,停止断点,逐步执行代码等等,但这是实际的代码而不是已填充的垫片到位!此外,断点在没有代码缩进的只读代码窗口中打开。

我的调试配置是:

    {
        "type": "node",
        "request": "launch",
        "name": "Launch Tests",
        "program": "${workspaceRoot}/node_modules/.bin/jest",
        "args": [
            "--runInBand",
            "--no-cache"
        ]
        // Not needed, but tried ;)
        //  "runtimeArgs": [
        //     "--debug-brk=127.0.0.1:5858"
        //  ],
        //  "port": 5858
    }

有没有人有类似的,希望有更好的体验吗?

PS。可能有vscode github issue (#26782)与此相关。

1 个答案:

答案 0 :(得分:0)

在我的问题中,我遇到了两个问题。

第一个,针对实际代码进行测试,似乎是Jest的一个问题。 Jest团队表示:

  

这是预期的行为。 Jest应该在源文件上运行。在任何大型代码库上,在运行测试之前生成一个包太慢了,所以Jest只是及时编译文件,这使得它很快。

现在这可能是一个错误传达,您可以使用正确的babel-jest配置来进行动态转换,我没有得到团队的进一步帮助。所以我决定选择一个不同的测试平台(Mocha,Jasmine和/或Karma)。

如果你想试试Jest的运气,你可以跟进这个帖子:https://github.com/facebook/jest/issues/4028

第二个问题是,在调试会话期间VS中只读面板中的代码打开,是Microsoft正在处理的一个未解决的问题。您可以在此处查看进度:https://github.com/Microsoft/vscode/issues/26782

[更新:我刚收到Jest团队的进一步指示:

  

@aschrijver Jest处理这个问题的一般方法是通过自己进行转换。因此,您在配置中设置了Jest本身用于进行转换的变换器。

     

https://facebook.github.io/jest/docs/configuration.html#transform-object-string-string

     

Typescript的示例配置可以让您了解它的外观:https://github.com/kulshekhar/ts-jest

     

就垫片而言,我认为你可能想要的实际上是Jest嘲笑。当您导入或需要时,Jest模拟可以介入而不是实际模块。