问答 [已解决] nyc instrument 不支持 RN 的 js 代码插桩,如何解决?

zailushang · May 19, 2020 · Last by zailushang replied at May 20, 2020 · 1241 hits

我之前使用的降版本方式是package.json中修改版本号,然后npm install , 然后nyc instrument插桩,注意:此时使用的nyc是全局nyc,并不是node_modules中的nyc,所以用的还是全局版本的nyc,导致降版本无效;
感谢@zsx10110 大大,成功帮我解决了,使用如下命令,强制降版本全局nyc:

npm install -g nyc@14.1.1  --registry https://registry.npm.taobao.org

这一刻,有点感动,哈哈,让我连续加了三天11点多下班,😭😭😭

报告:

有在做RN的代码覆盖率吗?

参考横捷的教程(https://testerhome.com/topics/8919nyc不支持RN的js插桩),碰到一些问题:发现

示例代码:https://github.com/OnTheWay111/AwesomeProject/blob/master/coverage_middleware/jss/App.js

问题示例

尝试过的nyc 版本: 11、12、13、14、15 均有问题
插桩命令:
nyc instrument js ../js

可以插桩成功的代码

var App = React.createClass({
render: function () {
return (
1
)
}
});

插桩失败的代码

var App = React.createClass({
render: function () {
return (
<View style={{ flex: 1, justifyContent: "center", alignItems: "center", flexDirection: 'column' }}>
<Text>你好吃了吗11111</Text>
</View>
)
}
});

有解决的方法吗?

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
最佳回复

问题解决了,解决方法如下,特别感谢 @zsx10110
我之前使用的降版本方式是package.json中修改版本号,然后npm install , 然后nyc instrument插桩,注意:此时使用的nyc是全局nyc,并不是node_modules中的nyc,所以用的还是全局版本的nyc,导致降版本无效;
感谢@zsx10110 大大,成功帮我解决了,使用如下命令,强制降版本全局nyc:

npm install -g nyc@14.1.1 --registry https://registry.npm.taobao.org

共收到 9 条回复 时间 点赞

有解决的小伙伴吗?

恒温 回复

还是不行,刚接触,可能有低级错误,运行 nyc instrument js ../js 对js目录下的文件插桩后,有的插桩成功,有的插桩失败

zailushang 回复

使用的babel编译的吗,用babel-plugins-istanbul

saii 回复

不是,用nyc instrument 插桩的,发现:
可以插桩成功

var App = React.createClass({
render: function () {
return (
1
)
}
});

插桩失败

var App = React.createClass({
render: function () {
return (
<View style={{ flex: 1, justifyContent: "center", alignItems: "center", flexDirection: 'column' }}>
<Text>你好吃了吗11111</Text>
</View>
)
}
});

实在是找不到问题原因

saii 回复

怀疑不支持某些语法

zailushang 回复

告诉你个好消息,帮你试了下 你可以把nyc的帮忙降级到14.0.0 我用那个版本插桩就可以了,我不确定是不是15的版本是不是修改了什么,因为我们这边都是通过istanbul-plugins进行插桩的

saii 回复

大哥,方便加个微信吗?我的是TTMMD155
我这边用"nyc": "14.0.0",还是不行

问题解决了,解决方法如下,特别感谢 @zsx10110
我之前使用的降版本方式是package.json中修改版本号,然后npm install , 然后nyc instrument插桩,注意:此时使用的nyc是全局nyc,并不是node_modules中的nyc,所以用的还是全局版本的nyc,导致降版本无效;
感谢@zsx10110 大大,成功帮我解决了,使用如下命令,强制降版本全局nyc:

npm install -g nyc@14.1.1 --registry https://registry.npm.taobao.org

zailushang 关闭了讨论 20 May 17:17
zailushang ReactNative 多端代码覆盖率调研及实践 中提及了此贴 20 May 19:13
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up