在NestJS中如何从HTML提取innerText以生成slug?
在NestJS中从HTML提取文本生成Slug的解决方案
你原来的代码报错是因为document是浏览器专属的DOM API,NestJS运行在Node.js后端环境中,不存在这个全局对象,所以无法执行document.createElement这类操作。下面提供两种Node.js环境下可行的方案:
方案一:使用cheerio(轻量HTML解析库)
cheerio是专门用于在Node.js中解析HTML的工具,语法和jQuery类似,处理轻量HTML场景效率很高。
- 安装依赖:
npm install cheerio
- 示例代码:
import * as cheerio from 'cheerio'; import slugify from 'slugify'; // 假设data.description是从数据库取出的原始HTML内容 const $ = cheerio.load(data.description); const plainText = $.text(); // 提取HTML中的纯文本 const slug = slugify(plainText);
方案二:使用jsdom(模拟浏览器DOM环境)
如果需要更完整的DOM模拟(比如处理复杂HTML结构、特殊DOM行为等),可以用jsdom,它能在Node.js中模拟浏览器的DOM环境。
- 安装依赖:
npm install jsdom
- 示例代码:
import { JSDOM } from 'jsdom'; import slugify from 'slugify'; const dom = new JSDOM(data.description); const plainText = dom.window.document.body.innerText; // 提取纯文本 const slug = slugify(plainText);
内容的提问来源于stack exchange,提问作者Korer
相关产品推荐
相关产品推荐

