分包异步化中的“跨分包 JS 代码引用”用法,是微信小程序重写了commonjs的require函数,语法也与通用的require语法不同,导致webpack无法解析微信小程序特殊的require函数(报错:Cannot statically analyse 'require(…, …)' in line 125),如何解决?(webpack支持解析的模块语法风格: ES6,CommonJS 和 AMD,见 https://webpack.docschina.org/api/module-methods/)
// subPackageA/index.js
// 使用回调函数风格的调用
require('../subPackageB/utils.js', utils => {
console.log(utils.whoami) // Wechat MiniProgram
}, ({mod, errMsg}) => {
console.error(`path: ${mod}, ${errMsg}`)
})
// 或者使用 Promise 风格的调用
require.async('../commonPackage/index.js').then(pkg => {
pkg.getPackageName() // 'common'
}).catch(({mod, errMsg}) => {
console.error(`path: ${mod}, ${errMsg}`)
})
遇到同样的问题,可以解决。可以参考 https://docs.taro.zone/docs/next/taro-in-miniapp#taro-%E9%A1%B9%E7%9B%AE%E5%BC%95%E7%94%A8%E5%8E%9F%E7%94%9F%E9%A1%B9%E7%9B%AE%E7%9A%84-js-%E6%96%87%E4%BB%B6
Taro 项目引用原生项目的 JS 文件
Taro不支持
同问
请问这个问题有解么,使用Taro时会遇到这种问题