收藏
回答

小程序中安装标准的 npm 包(非小程序专用 npm 包)构建成功,但是项目运行报错,请问如何解决?

报错信息如下

复现步骤为:

  1. 启用小程序【使用 npm 模块】
  2. 安装依赖 yarn add decrypt-core
  3. 工具>构建 npm
  4. 页面代码中使用 const { encrypt } = require('decrypt-core'); encrypt('12311', '123');
  5. 编译项目进入页面就报错

目前跟踪到的线索有:

  1. decrypt-core 库被小程序开发工具构建 npm 之后 miniprogram_npm/decrypt-core/index.js 文件中有对第三方 npm 包的引用,见下图,报错也是说这个包找不到
  2. 使用 vant-weapp 正常,也看了miniprogram_nnpm/@vant/ 中的文件内容没有使用 require 引入外部第三方包,因此怀疑是否是小程序构建 npm 之后的文件中不能使用第三方 npm 包,只能引入本地包

最后,猜测是否需要 decrypt-core 这个 npm 包,修改 main 指向的入口文件或者使用 miniprogram 指向的入口文件,将第三方包打包进来?

回答关注问题邀请回答
收藏

2 个回答

  • Demons
    Demons
    2022-01-04

    先npm init 或者npm init -y 初始化,然后npm i ,然后勾选使用npm模块再构建npm

    2022-01-04
    有用
    回复 4
    • JohnieXu
      JohnieXu
      2022-01-07
      完全按照这个步骤新建项目,然后安装并使用 decrypt-core,还是报错;目前发现,手动把node_modules 中 crypto-js 下的js 文件手动拷贝到 miniprogram_npm 中可以解决
      2022-01-07
      回复
    • JohnieXu
      JohnieXu
      2022-01-07
      请问构建 npm 的过程,小程序开发者工具只会处理 package.json 的 main 指向的 js 文件,而不会继续解析并处理这个文件使用 require 依赖的文件吗?
      2022-01-07
      回复
    • 溪水潺潺
      溪水潺潺
      2022-05-24
      我的开发者工具里面没有勾选使用npm模块,开发者工具1.05.2201240
      2022-05-24
      回复
    • JohnieXu
      JohnieXu
      2022-07-02回复溪水潺潺
      用最新版本开发者工具试一试
      2022-07-02
      回复
  • JohnieXu
    JohnieXu
    2022-06-11

    此问题已修复,更新 decrypt-core 为最新版(>=v1.1.4)

    具体原因:

    1. decrypt-core 包未按照微信小程序 npm 规范发布(包内容不包含其要求的 miniprogram_dist 目录),即 decrypt-core 为非小程序专用 npm 包
    2. 对于非专用 npm 包,`构建 npm` 时开发者工具会编译 npm 包到小程序包,放置到miniprogram_npm 目录(这一步会将引入的 crypto-js 依赖路径指向 miniprogram_npm)
    3. 上述编译过程中,decrypt-core 引入的第三方包 crypto-js 等也会采用同样方式进行编译
    4. 编译 crypto-js 时发现 crypto-js 为非小程序专用包,于是只编译了其 index.js 并放置miniprogram_npm 目录,其他的文件未编译(enc-hex.js等其他文件)输出


    解决方案:

    之前的临时解决方案是:手动拷贝 crypto-js 包内容到 miniprogram_npm 目录下

    最佳解决方案如下:

    1. 更新 decrypt-core 包的构建发布流程,兼容微信小程序包规范
    2. 上述兼容后,只需安装 decrypt-core 依赖,并构建 npm,且无需手动拷 crypto-js 包内容到miniprogram_dist 目录
    3. 兼容微信小程序包方案见 https://github.com/JohnieXu/decrypt-core/commit/57ee51af5af234955bb4ee029bd0d1a83b420524


    2022-06-11
    有用
    回复
登录 后发表内容