npm run build 报错如下

    1. > cross-env NODE_ENV=production webpack --config ./build/webpack.config.prod.js
    2. events.js:377
    3. throw er; // Unhandled 'error' event
    4. ^
    5. Error: spawn webpack ENOENT
    6. at Process.ChildProcess._handle.onexit (internal/child_process.js:274:19)
    7. at onErrorNT (internal/child_process.js:469:16)
    8. at processTicksAndRejections (internal/process/task_queues.js:82:21)
    9. Emitted 'error' event on ChildProcess instance at:
    10. at Process.ChildProcess._handle.onexit (internal/child_process.js:280:12)
    11. at onErrorNT (internal/child_process.js:469:16)
    12. at processTicksAndRejections (internal/process/task_queues.js:82:21) {
    13. errno: -2,
    14. code: 'ENOENT',
    15. syscall: 'spawn webpack',
    16. path: 'webpack',
    17. spawnargs: [ '--config', './build/webpack.config.prod.js' ]
    18. }

    查看依赖 webpack 等依赖项是否安装

    这个问题的根源,是项目的依赖没有正确的添加和维护,有同学通过 npm i -f 的形式规避了依赖安装报错的问题,此种方式同时也会生成对应的 package-lock.json 文件,该项目在特定的 node 版本下还能让项目正常的构建成功,就有些莫名所以。

    仅对项目做大体描述:(node@16.13.1 && npm@8)

    1. 项目内的多个依赖包设定有 peerDependencies
    2. 项目自身并没有安装 peerDependencies 要求的包
    3. 常规安装会报错 npm i
    4. 通过 npm i -f 安装依赖能成功
    5. 切换 node@16.16.0 版本后,已经有 lock,使用 npm i 安装依赖会存在问题

    参考文档: