m***@163.com
m***@163.com
  • 发布:2022-02-17 18:12
  • 更新:2022-02-18 15:04
  • 阅读:1205

uni-app打包app-plus时,vue.config.js关于webpack的resolve.alias设置疑似没有生效

分类:uni-app

我想在引入 knex.js 方便在 App 端构造 SQL 用于 SQLite 的读写,我参考 https://ext.dcloud.net.cn/plugin?id=3460 里的插件写了一个适配当前版本的 knex.js Client 但是由于 knex.js 里有部分代码无可避免地 require 了 sqlite3、pg 等 node.js 上数据库驱动,所以我想把这些驱动的包都 alias 到某个空白函数里,因为实际代码里是肯定不会调用到的。

const { resolve } = require('path');  

module.exports = {  
  chainWebpack: config => {  
    config.resolve.alias  
      .set('lodash$', 'lodash/lodash.min.js')  
      .set('fs$', resolve(__dirname, 'src/utils/dummyFs.js'));  
    ['@vscode/sqlite3', 'better-sqlite3', 'mysql', 'mysql2', 'oracledb',  
      'pg', 'pg-query-stream', 'tedious'].forEach(lib => {  
      config.resolve.alias.set(lib + '$', 'lodash/noop.js');  
    });  
  }  
};

但是实际打包(包括云打包、本地打包均会)的时候会提示以及设置好 alias 的包还是没有找到

[HBuilder] 18:03:34.140 项目 'recognize-agile'开始导出...  
[HBuilder] 18:03:34.157 项目 'recognize-agile' 开始编译...  
[HBuilder] 18:03:35.969 编译器版本:3.1.22(v3)详见:https://ask.dcloud.net.cn/article/36599。  
[HBuilder] 18:03:35.970 正在编译中...  
[HBuilder] 18:03:44.282 [警告] `..\node_modules\lodash\lodash.js` 文件体积超过 500KB,已跳过压缩以及 ES6 转 ES5 的处理,手机端使用过大的js库影响性能。  
[HBuilder] 18:04:11.520 文件查找失败:'@vscode/sqlite3' at ..\node_modules\knex\lib\dialects\sqlite3\index.js:90  
[HBuilder] 18:04:11.521 文件查找失败:'better-sqlite3' at ..\node_modules\knex\lib\dialects\better-sqlite3\index.js:49  
[HBuilder] 18:04:11.542 文件查找失败:'mysql' at ..\node_modules\knex\lib\dialects\mysql\index.js:78  
[HBuilder] 18:04:11.544 文件查找失败:'mysql2' at ..\node_modules\knex\lib\dialects\mysql2\index.js:55  
[HBuilder] 18:04:11.560 文件查找失败:'oracledb' at ..\node_modules\knex\lib\dialects\oracledb\index.js:99  
[HBuilder] 18:04:11.560 文件查找失败:'oracledb' at ..\node_modules\knex\lib\dialects\oracledb\utils.js:49  
[HBuilder] 18:04:11.578 文件查找失败:'pg' at ..\node_modules\knex\lib\dialects\pgnative\index.js:58  
[HBuilder] 18:04:11.579 文件查找失败:'pg' at ..\node_modules\knex\lib\dialects\postgres\index.js:132  
[HBuilder] 18:04:11.595 文件查找失败:'pg' at ..\node_modules\knex\lib\dialects\redshift\index.js:96  
[HBuilder] 18:04:11.596 文件查找失败:'pg-query-stream' at ..\node_modules\knex\lib\dialects\postgres\index.js:283  
[HBuilder] 18:04:11.614 文件查找失败:'tedious' at ..\node_modules\knex\lib\dialects\mssql\index.js:142  
[HBuilder] 18:04:32.824  DONE  Build complete.   
[HBuilder] 18:04:32.824 项目 'recognize-agile' 编译成功。  
[HBuilder] 18:04:32.835 WARNING: Critical dependency: the request of a dependency is an expression  
[HBuilder] 18:04:32.948  ERROR  Build failed with errors.  
[HBuilder] 18:04:32.959 项目 'recognize-agile'导出失败

而且也可以看到 lodash 的 alias 也是没有生效的,因为 lodash.min.js 只有 70+ KB,但是由于这个影响不大,所以也一直没有管。我翻找了一下 uni-app 相关的源码,发现 @dcloudio\vue-cli-plugin-hbuilderx\build\webpack.nvue.conf.js 里面有另一个 webpack 配置,我在里面加入 lodash 的 alias,可以发现该警告会消失。但是加入其他数据库驱动的 alias 并不能解决相关报错。但是似乎说明了 uni-app 打包的时候有不止一份 webpack 的配置?

所以想确认一下,app-plus 环境下用的是哪一份 webpack 配置?

2022-02-17 18:12 负责人:无 分享
已邀请:
DCloud_UNI_FXY

DCloud_UNI_FXY

vue和nvue分别使用了不同的webpack配置

该问题目前已经被锁定, 无法添加新回复