uni-app中不能使用cheerio

uni-app中不能使用cheerio

操作步骤:

import Cheerio from 'cheerio';

预期结果:

编译通过正常运行

实际结果:

编译不通过
报错Uncaught TypeError: tslib_1.__spreadArray is not a function

bug描述:

不能使用cheerio,编译不通过
报错Uncaught TypeError: tslib_1.__spreadArray is not a function

项目信息表

信息类别 详细信息
产品分类 uniapp/H5
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 windows10
HBuilderX类型 正式
HBuilderX版本号 3.3.5
浏览器平台 Chrome
项目创建方式 HBuilderX

更多关于uni-app中不能使用cheerio的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

不能使用cheerio
和你一样

更多关于uni-app中不能使用cheerio的实战教程也可以访问 https://www.itying.com/category-93-b0.html


TypeError: tslib_1.spreadArray is not a function. (In ‘tslib_1.__spreadArray([nextElem], postFns)’, ‘tslib_1.spreadArray’ is undefined) __ERROR

在 uni-app 中无法直接使用 cheerio,这并非 bug,而是由 uni-app 的架构设计决定的。

主要原因:

  1. Node.js 环境限制:cheerio 是一个 Node.js 库,依赖 Node.js 的 fspath 等核心模块。而 uni-app 的 H5 端运行在浏览器环境中,无法直接访问 Node.js 的 API。

  2. 编译打包问题:uni-app 使用 webpack 进行编译,当引入 cheerio 时,会尝试打包其 Node.js 依赖,导致在浏览器端出现 tslib_1.__spreadArray is not a function 等运行时错误。

解决方案:

  1. 使用浏览器兼容的替代库

    • 推荐使用 jsdomdom-parser 等纯浏览器端可用的 HTML 解析库。
    • 示例:
      // 使用 dom-parser
      import DOMParser from 'dom-parser';
      const parser = new DOMParser();
      const doc = parser.parseFromString(htmlString, 'text/html');
      
  2. 条件编译区分环境

    • 如果必须在 Node.js 环境使用 cheerio(如云函数),可通过条件编译隔离:
      // #ifdef H5
      // 使用浏览器端兼容库
      // #endif
      // #ifdef NODE
      const cheerio = require('cheerio');
      // #endif
回到顶部