最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • NPM 7 workspace模式安装依赖执行找不到sentry-cli

    正文概述 掘金(CRPER)   2021-05-12   1141

    前言

    搜遍了谷歌还有相关Github Repo Issues都没有,
    npm workspace的资料都不多,
    有个别都是yarn workspace说什么安装依赖异常,
    换成国内的淘宝源啊,来来去去都说什么源找不到,

    一顿操作猛如虎,问题还是没有解决。
    只能自己摸索了,我的解决姿势感觉应该是全网第一例!

    系统环境

    • Mac OS
    • Node 14.16.1
    • NPM 7.12.1
      • @sentry/cli 1.64.2

    问题列表

    sentry-cli ENOENT

    ERROR in Sentry CLI Plugin: spawn /workspace/project/node_modules/@sentry/cli/sentry-cli ENOENT
    

    not installed by @sentry/cli 

    error: sentry-cli was not installed by @sentry/cli install script 
    

    挣扎的姿势

    .npmrc配置源

    sentrycli_cdnurl=https://npm.taobao.org/mirrors/sentry-cli/
    

    治标不治本,因为在单体模式下(非workspace)下,
    走淘宝源安装是可以顺利且挺快的。。。
    npm 7 workspace下还是找不到。
    node_modules只装了一个残缺版本的@sentry/cli,
    里面缺失sentry-cli这个(根据系统类型的二进制执行文件)。。

    在主项目强装

    # 就是清除缓存和强制安装,删除大法。。都试过。。
    # 没啥用,
    npm cache clean --force
    rm -rf node_modules yarn.lock package-lock.json
    npm install @sentry/cli  --force --legacy-peer-deps
    
    # 为毛要--legacy-peer-deps
    # 因为不是对等依赖的子包,常规的install会抛出如下异常
    # ERESOLVE unable to resolve dependency tree
    

    安装最新包

    解决了这个问题,

    error: sentry-cli was not installed by @sentry/cli install script 
    

    最终解决(过渡方案)

    我跑到node_modules/@sentry/cli区域,
    发现他提供了安装脚本,顺势执行了一波。。

    # exec
    # 我发现里面的逻辑就是判定当前使用什么系统,下载对应的二进制
    node ./node_modules/@sentry/cli/scripts/install.js
    
    # 果然执行完毕。。sentry-cli回来了。。
    
    # 验证
    ./node_modules/.bin/sentry-cli --help
    # 可以正常输出
    

    每次手动执行去执行?NO,NO,NO。。。
    生命宝贵,能自动化的还是自动化好

    npm 提供了prepare的钩子,可以在install之后自动执行。
    官方文档:npm scripts -> Life Cycle Scripts

    package.json

      "scripts": {
        "prepare": "husky install; node check-sentry.js",
      },
    

    check-sentry.js

    最直接就是往项目根目录写一个js逻辑判定文件。。

    /*
    * 1. 逻辑不复杂,就是执行部分shell去判定
    * 2. 二进制执行凉凉进入catch逻辑
    * 3. 走一遍安装逻辑(有缓存会直接命中,输出use cache ....)
    * 4. 最后就是输出版本号了。。
    */ 
    const { execSync } = require('child_process');
    try {
      execSync('./node_modules/.bin/sentry-cli -V');
    } catch (error) {
      execSync('node ./node_modules/@sentry/cli/scripts/install.js');
      execSync('./node_modules/.bin/sentry-cli -V');
    }
    

    完结撒花,可以正常打包调用sentry上传sourcemap这些

    总结

    有不对之处请留言,会及时修正,谢谢阅读!


    起源地下载网 » NPM 7 workspace模式安装依赖执行找不到sentry-cli

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元