老江
老江
  • 发布:2020-04-09 21:01
  • 更新:2022-10-14 22:22
  • 阅读:2867

【报Bug】HBuliderX 2.6.5之后的版本不能使用cheerio

分类:HBuilderX

详细问题描述

有一uni-app项目为 HBuliderX 2.6.5.20200314版本创建,使用到npm 安装 cheerio 使用,一切正常。在升级HBuliderX后cheerio不能使用,会报错。
之前还可以不升级HBuliderX以暂时使用,但现在云打包时已不再支持2.6.5,只能升级,升级后又用不了cheerio,很是纠结

[内容]

重现步骤

[步骤]
1,使用高于 2.6.5 版本的HBuliderX创建uni-app项目
2,使用npm安装cheerio
3,在项目代码中使用cheerio

[结果]
报错如下:
[system] TypeError: Cannot read property 'htmlparser2' of undefined
at parseWithParse5 (parse.js?9257:26)
at Function.exports.evaluate (parse.js?9257:42)
at module.exports (parse.js?9257:11)
at Function.exports.load (static.js?f0d4:27)
at Function.success (manhuadui.js?68df:93)
at eval (index.umd.min.js?1c31:1)
at Object.j [as callback] (index.umd.min.js?1c31:1)
at v (index.umd.min.js?1c31:1)
at XMLHttpRequest.y.onload (index.umd.min.js?1c31:1)

[期望]
正常运行

IDE运行环境说明

[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]
HBuilderX
[IDE版本号]
2.6.5以上
[windows版本号]
win10 1903

uni-app运行环境说明

[运行端是h5或app或某个小程序?]
H5 和 app

[项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试]
HBuilderX创建

[编译模式说明:自定义组件模式?纯nvue模式?v3模式?]
V3

[可重现代码片段]

    import Cheerio from 'cheerio';  
    let t = Cheerio.load('<div>a</div>');
2020-04-09 21:01 负责人:无 分享
已邀请:
DCloud_UNI_GSQ

DCloud_UNI_GSQ

bug确认,已加分,后续会考虑优化方案
原因是由于 cheerio 依赖的 parse5 版本比较低,而 HBuilderX 内置的 parse5 版本比较高,cheerio 不兼容高版本的 parse5。
目前可以使用的解决方案有如下四种:

  1. 配置 cheerio 使用 htmlParser2
    let t = Cheerio.load('<div>a</div>', {  
        _useHtmlParser2: true  
    });  
  2. 使用小于1.0版本的 cheerio
  3. 修改本地 node_modules/cheerio/lib/parse.js 文件:parse5 = require('parse5'); 改为 parse5 = require('../../parse5');
  4. 转为 cli 项目
  • y***@yeah.net

    当前新版本又不能用了,白屏。麻烦帮忙看看


    reportJSException >>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->Uncaught TypeError: tslib_1.__spreadArray is not a function

    2021-10-15 19:12

  • 西红柿炒地球

    回复 y***@yeah.net: 我也遇到了同样的问题,请问你解决了吗

    2021-11-15 00:56

  • 西红柿炒地球

    回复 西红柿炒地球: Uncaught TypeError: tslib_1.__spreadArray is not a function

    2021-11-15 00:57

  • 一抱一个胖猪猪

    又不能用了

    2022-10-14 22:11

一抱一个胖猪猪

一抱一个胖猪猪 - 喜猪妹一只,爱超大只!管你好不好看,吨位最重要!

npm i cheerio@1.0.0-rc.5 这个版本可以

老江

老江 (作者)

解决方案有效可用,十分感谢!

s***@qq.com

s***@qq.com

Uncaught TypeError: tslib_1.__spreadArray is not a function
现在是这个错误~

w***@sina.com

w***@sina.com

又不能使用了,麻烦看一下现在是这个错误:Uncaught TypeError: tslib_1.__spreadArray is not a function

x***@163.com

x***@163.com

一引入我就报 TypeError: Cannot read properties of undefined (reading 'Universal')

该问题目前已经被锁定, 无法添加新回复