Webpack运行时无法解析动态导入(Nx项目场景)
问题:Webpack构建Nx应用时动态导入存在的文件却报“找不到模块”
我正在使用Nx,通过Webpack构建了一个应用。现在依赖库中有一条动态导入语句,运行时Webpack抛出“找不到模块”错误,给出了未找到文件的完整路径,但该文件确实存在于对应位置。我通过glob模式查找所有以.migration.js结尾的文件,然后在运行时导入它们。
错误栈
/home/mwaqar666/code/sca/dist/apps/sca-cmd/libs_backend_db_src_index_ts.js:22 var e = new Error("Cannot find module '" + req + "'"); ^ Error: Cannot find module '/home/mwaqar666/code/sca/dist/libs/backend/data-access-layer/src/domains/user/2022_12_14_09_45_17_941_create-users-table.migration.js' at /home/mwaqar666/code/sca/dist/apps/sca-cmd/libs_backend_db_src_index_ts.js:22:12 { code: 'MODULE_NOT_FOUND' } Node.js v18.12.1 Error: Command failed: NODE_ENV=dev node dist/apps/sca-cmd/main.js migration:up at checkExecSyncError (node:child_process:871:11) at execSync (node:child_process:943:15) at createSyncProcess (/home/mwaqar666/code/sca/node_modules/nx/src/executors/run-commands/run-commands.impl.js:166:34) at /home/mwaqar666/code/sca/node_modules/nx/src/executors/run-commands/run-commands.impl.js:113:13 at Generator.next (<anonymous>) at /home/mwaqar666/code/sca/node_modules/tslib/tslib.js:118:75 at new Promise (<anonymous>) at Object.__awaiter (/home/mwaqar666/code/sca/node_modules/tslib/tslib.js:114:16) at runSerially (/home/mwaqar666/code/sca/node_modules/nx/src/executors/run-commands/run-commands.impl.js:111:20) { status: 1, signal: null, output: [ null, null, null ], pid: 52699, stdout: null, stderr: null }
被报告缺失的文件确实存在于dist文件夹中,这让该错误更令人费解。
复现步骤
- 克隆项目仓库
- 切换到分支
backend/backend-integration - 执行
npx nx run sca-cmd:build(使用Webpack构建命令行应用) - 执行
npx nx run backend-data-access-layer:build(使用tsc构建包含待导入文件的库) - 执行
npx nx run sca-cmd:run:dev --verbose -- migration:up(通过node运行sca-cmd应用)
相关信息
Webpack version: 5.75.0 Node.js version: 18.12.1 Operating System: Ubuntu 22.04.1 LTS (Jammy Jellyfish) Nx version: 15.3.3 Typescript version: 4.9.4
内容的提问来源于stack exchange,提问作者Muhammad Waqar
相关产品推荐
相关产品推荐

