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 回复
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 的架构设计决定的。
主要原因:
-
Node.js 环境限制:cheerio 是一个 Node.js 库,依赖 Node.js 的
fs、path等核心模块。而 uni-app 的 H5 端运行在浏览器环境中,无法直接访问 Node.js 的 API。 -
编译打包问题:uni-app 使用 webpack 进行编译,当引入 cheerio 时,会尝试打包其 Node.js 依赖,导致在浏览器端出现
tslib_1.__spreadArray is not a function等运行时错误。
解决方案:
-
使用浏览器兼容的替代库:
- 推荐使用
jsdom或dom-parser等纯浏览器端可用的 HTML 解析库。 - 示例:
// 使用 dom-parser import DOMParser from 'dom-parser'; const parser = new DOMParser(); const doc = parser.parseFromString(htmlString, 'text/html');
- 推荐使用
-
条件编译区分环境:
- 如果必须在 Node.js 环境使用 cheerio(如云函数),可通过条件编译隔离:
// #ifdef H5 // 使用浏览器端兼容库 // #endif // #ifdef NODE const cheerio = require('cheerio'); // #endif
- 如果必须在 Node.js 环境使用 cheerio(如云函数),可通过条件编译隔离:

