使用“跨分包 JS 代码引用”的语法,此require语法不能被webpack识别,如何解决?
分包异步化中的“跨分包 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}`)
})