ng build --watch删除dist内目录致about-us库链接失败求助
Angular库
about-us链接及构建异常排查 背景
我的应用依赖两个Angular库:contact-us和about-us。contact-us已成功链接并正常使用,但用相同流程处理about-us时出现了一系列异常。
about-us链接操作步骤
cd libraries/about-us/ npm run build cd /dist/about-us npm link ng build --watch
执行ng build --watch后的错误信息
注:以下错误标注3个关键点
Building Angular Package ------------------------------------------------------------------------------ Building entry point 'about-us' ------------------------------------------------------------------------------ // Point 1. 该错误在contact-us中也会出现,但不影响使用 ⠋ Compiling with Angular sources in Ivy partial compilation mode.internal/bootstrap/switches/does_own_process_state.js:130 cachedCwd = rawMethods.cwd(); ^ Error: ENOENT: no such file or directory, uv_cwd at process.wrappedCwd [as cwd] (internal/bootstrap/switches/does_own_process_state.js:130:28) at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:872:42) at Loader.resolve (internal/modules/esm/loader.js:89:40) at Loader.getModuleJob (internal/modules/esm/loader.js:242:28) at Loader.import (internal/modules/esm/loader.js:177:28) at internal/modules/run_main.js:52:28 at Object.loadESM (internal/process/esm_loader.js:68:11) at processTicksAndRejections (internal/process/task_queues.js:95:5) at async handleMainPromise (internal/modules/run_main.js:59:12) { errno: -2, code: 'ENOENT', syscall: 'uv_cwd' } //point 2. 该错误不会在contact-us中出现 //point 3. 若在此处中断命令,dist/about-us/中仍能看到文件 events.js:377 throw er; // Unhandled 'error' event ^ Error: ENOENT: no such file or directory, uv_cwd at process.cwd (internal/main/worker_thread.js:149:19) at MessagePort.<anonymous> (internal/main/worker_thread.js:163:48) at MessagePort.[nodejs.internal.kHybridDispatch] (internal/event_target.js:399:24) at MessagePort.exports.emitMessage (internal/per_context/messageport.js:18:26) Emitted 'error' event on process instance at: at emitUnhandledRejectionOrErr (internal/event_target.js:579:11) at MessagePort.[nodejs.internal.kHybridDispatch] (internal/event_target.js:403:9) at MessagePort.exports.emitMessage (internal/per_context/messageport.js:18:26) at Worker.[kOnExit] (internal/worker.js:271:5) at Worker.<computed>.onexit (internal/worker.js:203:20) { errno: -2, code: 'ENOENT', syscall: 'uv_cwd' }
异常现象分析
执行命令后dist目录被清空,项目文件夹被删除,这是触发ENOENT错误的直接原因。
尝试调整后的问题
将ng build --watch移至about-us根目录执行,构建无错误,但在应用目录执行以下命令时:
npm link about-us ionic cap build android
应用无法识别该库,报错:
cannot find module 'about-us' or its corresponding type declarations. 29 loadChildren: () => import('about-us').then(m => m.AboutusModule) ~~~~~~~~~~~~~~~~ [ERROR] An error occurred while running subprocess ng. ng run app:build exited with exit code 1.
同时发现应用node_modules目录中,about-us的链接与contact-us的链接存在差异。
问题诉求
需要明确ng build --watch异常的根本原因,以及解决库链接后应用无法识别的问题。
环境信息
- Node版本:nvm 14.20
- Angular CLI版本:14.0.1
内容的提问来源于stack exchange,提问作者user6781
相关产品推荐
相关产品推荐

