Skip to content

mp-toutiao 抖音开发者工具(rspuck) 编译报错 normalizeEmbedFlag: Node does not exist,无法运行 #451

Description

@WuChenDi

问题描述

基于 unibest 模板的项目 build 到抖音小程序(mp-toutiao)后,用抖音开发者工具(新版 rspuck 编译器)导入编译报错,无法运行。产物本身是标准的 uni-app 输出(页面/组件路径正确、主包 common/vendor.jsapp.ttss 齐全),报错栈全部落在开发者工具内置的 @byted-rspuck/ide 内部。

报错信息

存在分包时,编译期报:

× Error: Node does not exist: pages/xxx/xxx.json
    at DepGraph.dependenciesOf (dependency-graph/lib/dep_graph.js:244:13)
    at Ce.normalizeEmbedFlag (@byted-rspuck/ide/dist/cli.js:1:77917)
    at e.assemble (@byted-rspuck/ide/dist/cli.js:1:84525)
    at ... (@byted-rspuck/ide/dist/cli.js)
    at Object.fn (@byted-rspuck/ide/dist/index.js:1:2267)
    at next (@rspack/lite-tapable/dist/index.js:486:37)

报错的页面节点每次编译在不同页面间变化(如 pages/me/me.json / 分包页 flox/api.json / flox/search.json / pages/index/index.json)。

环境

  • unibest 版本:4.4.1
  • uni-app 编译器:5.15(vue3)
  • 抖音基础库(tma-core):4.12.0.3
  • 抖音开发者工具版本:V4.5.4
  • 系统:Windows

复现步骤

  1. 基于 unibest 模板创建项目(vanilla 模板 src/pages-demo 为空,需在其下放置任意一个分包页面,否则不会生成 subPackages)。
  2. pnpm build:mp-toutiao,确认 dist/build/mp-toutiao/app.json 中含 subPackages
  3. 用抖音开发者工具导入 dist/build/mp-toutiao 编译 → 报上述 normalizeEmbedFlag 错误。
  4. 若手动将 app.jsonsubPackages 合并进 pages(即取消分包)则不再报此错 → 可佐证是 rspuck 对“分包 embed 归一化”的处理问题。

已排查 / 结论

  • 产物经核验为标准 uni-app 输出,路径与依赖均正确。
  • 报错栈完全位于抖音开发者工具的新版 rspuck 编译器(@byted-rspuck/ide)内部,老编译器无 normalizeEmbedFlag 这套逻辑。
  • 尝试无效:manifest.setting.newFeature:false(rspuck 未被关闭,栈内仍是 @byted-rspuck)、关闭 @uni-ku/bundle-optimizer、增删 optimization.subPackages —— 均只是让报错节点换到其它页面。

期望

unibest 模板 build 出的抖音小程序能在抖音开发者工具(rspuck)下正常编译运行;或提供针对该编译器的适配/规避方案。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions