我使用流行的方法创建了一个 React Native 项目点燃 CLI v2.0.0
与默认样板。
然后我用一堆 Nodejs 垫片装饰它,因为我将有一些基于节点的依赖项。
一切正常,我可以从命令行运行 Jest 测试。到目前为止,一切都很好。
然而,现在我的一个单元测试超时了。这可能是由于调用模拟节点函数的异步调用失败。但没有关于错误、位置等信息。
所以我想使用 Visual Studio Code 进行调试v1.13.1
问题就开始了。我一生都无法弄清楚如何配置它以便我可以设置断点both在应用程序代码中的测试中+node_modules
.
我已经安装了 React Native 工具v0.3.2
并可以使用默认启动调试器Debug Android
配置:
[vscode-react-native] Finished executing: adb -s emulator-5554 shell am broadcast -a "com.myexample.RELOAD_APP_ACTION" --ez jsproxy true
[vscode-react-native] Starting debugger app worker.
[vscode-react-native] Established a connection with the Proxy (Packager) to the React Native application
[vscode-react-native] Debugger worker loaded runtime on port 13746
Running application "MyApplication" with appParams: {"rootTag":1}. __DEV__ === true, development-level warning are ON, performance optimizations are OFF
但没有遇到断点。 VS 说:Breakpoint ignored because generated code not found (source map problem?).
(顺便说一句:两者index.android.bundle
and index.android.map
刚刚生成于.vscode/.react
)。
而且我也没有看到通过测试代码进行调试的方法(位于${projectRoot}/Tests
).
基于大量的谷歌搜索,我创建了另一个调试配置来在 VS Code 中运行 Jest:
{
"type": "node",
"request": "launch",
"name": "Jest Tests",
"program": "${workspaceRoot}/node_modules/jest-cli/bin/jest.js",
"args": [
"--config",
"package.json",
"--runInBand",
"--verbose",
"--no-cache",
"-u"
],
"runtimeArgs": [
"--nolazy"
],
"console": "internalConsole",
"sourceMaps": true,
"address": "localhost",
"port": 8081,
"outFiles": [
"${workspaceRoot}/.vscode/.react"
],
"env": {
"NODE_ENV": "test"
}
}
这至少会运行测试,在 VS 调试控制台中显示测试报告,但再次没有任何断点被击中。
我也尝试过设置outFiles
到 ignite 生成包的位置,即${workspaceRoot}/android/app/build/intermediates/assets/debug/*
结果相同。
谁能指出我正确的方向吗?
附言。我在 Ubuntu 16.04 上:
System
platform linux
arch x64
cpu 4 cores Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
JavaScript
node 8.1.2 /usr/local/bin/node
npm 4.6.1 /usr/local/bin/npm
yarn 0.24.6 /usr/bin/yarn
React Native
react-native-cli 2.0.1
app rn version 0.45.1
Ignite
ignite 2.0.0 /usr/local/bin/ignite
Android
java 1.8.0_111 /usr/bin/java
android home - undefined