百度小程序不支持 v-filter 语法,需用 wxs 实现过滤:wxs 文件须放 static/wxs/ 下、用 var/function、module.exports 导出;模板中用 引入并 {{ fmt.fn() }} 调用;pages.json 需注册自定义组件;基础库不低于 3.300;条件编译必须用 #ifdef mp-baidu 且成对包裹。

uni-app百度小程序不支持 v-filter 语法
百度小程序的渲染层不识别 Vue 模板中的 v-filter(如 {{ item.price | formatPrice }}),这不是 uni-app 的 bug,而是百度小程序原生限制:它只支持 WXS(类似小程序自己的 JS 子集)做模板过滤,且必须显式引入、声明、调用。
常见错误现象是编译无报错,但运行时控制台抛出 ReferenceError: formatPrice is not defined 或直接空白渲染。
- WXS 文件需放在
static/wxs/或common/wxs/下,后缀为.wxs(不能是.js) - WXS 中不能使用 ES6+ 语法(如
const、箭头函数、解构),只能用var+function - WXS 函数必须通过
module.exports显式导出,且不能带参数默认值 - 在
.vue模板中要用wxs标签引入,再用{{ fmt.formatPrice(item.price) }}调用,不能直接写|管道符
pages.json 里没配 usingComponents 不会报错但过滤器不生效
如果你把过滤逻辑封装成自定义组件(比如 filter-price.vue),想在页面里当“过滤器”用,那它本质是个组件,不是模板指令。这时候必须在对应页面的 pages.json 中手动注册:
"usingComponents": {
"filter-price": "/components/filter-price/filter-price.vue"
}
漏掉这步,<filter-price :value="item.price"></filter-price> 会被当成普通标签忽略,控制台也不会提示组件未注册——它就静默不渲染。
- 注意路径必须是绝对路径(以
/开头),且和components/目录结构严格一致 - 百度小程序不支持
scoped样式穿透到 WXS 组件,如果需要样式隔离,得用class+ 全局样式覆盖 - 该方式适合逻辑较重、带 UI 的“过滤展示”,不适合简单字符串处理(比如时间格式化)
百度小程序基础库版本低于 3.300 会导致 WXS 报 undefined is not a function
低版本基础库对 WXS 的 require 和模块加载有缺陷,尤其当你在 WXS 里 require('./utils.wxs') 做工具复用时,很容易触发这个错误。
调用百度文档解析API,支持18+格式,提取文本、表格、版面分析、OCR识别及RAG文档分块。适用于文档解析、文本/表格提取、结构分析、扫描件处理。触发词:文档解析、PDF解析、Word解析、表格提取、OCR、文档分析、提取文本、文档结构、扫描识别。
解决办法是打开 manifest.json → 百度小程序配置 → 将 minPlatformVersion 改为 "3.300" 或更高(截至 2026 年 9 月,线上主流机型已基本覆盖 3.400+)。
- 改完要重新发行,真机调试时记得清微信开发者工具缓存(百度版工具叫“百度开发者工具”,别用错)
- 不要依赖
swan.getSystemInfoSync().platformVersion在运行时降级——WXS 层无法读取该 API - 若必须兼容旧版,就把所有过滤逻辑写进单个 WXS 文件,避免跨文件
require
uni-app 条件编译写错导致 H5 正常但百度端白屏
有人习惯用 #ifdef MP-BAIDU 包裹 WXS 引入代码,但漏掉了模板里的实际调用,或者把 MP-BAIDU 写成 MP_BAIDU(下划线错写成短横)——这种拼写错误不会被编译器拦截,结果就是百度端模板里啥都没渲染。
检查点很具体:
-
<wxs src="../../static/wxs/fmt.wxs" module="fmt"></wxs>必须出现在<template></template>标签下,不能放在<script></script>或<style></style> -
#ifdef MP-BAIDU和#endif必须成对,且不能嵌套在v-if或computed里 - 百度端不支持
uni.getSystemInfo返回的platform字段判断环境,只能靠条件编译
最稳妥的做法是:所有 WXS 相关代码统一用 #ifdef MP-BAIDU 包裹,连同引入、调用、兜底逻辑一起写死,别试图“动态切换”。










