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

zailushang · 2020年05月19日 · 最后由 zailushang 回复于 2020年05月20日 · 6 次阅读

我之前使用的降版本方式是 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 关闭了讨论 05月20日 09:17
zailushang ReactNative 多端代码覆盖率调研及实践 中提及了此贴 05月20日 11:13
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册