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

在路上 · May 19, 2020 · Last by 在路上 replied at May 20, 2020 · 4352 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>
        )
    }
});

有解决的方法吗?

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
最佳回复
在路上 #1 · May 20, 2020 Author

问题解决了,解决方法如下,特别感谢 @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 条回复 时间 点赞
在路上 #1 · May 19, 2020 Author

有解决的小伙伴吗?

恒温 回复

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

在路上 回复

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

在路上 #5 · May 19, 2020 Author
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>
        )
    }
});

实在是找不到问题原因

在路上 #6 · May 19, 2020 Author
saii 回复

怀疑不支持某些语法

在路上 回复

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

在路上 #8 · May 20, 2020 Author
saii 回复

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

在路上 #1 · May 20, 2020 Author

问题解决了,解决方法如下,特别感谢 @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

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