You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular SSR执行npm run build:ssr出现多类依赖报错如何解决

问题根因

该报错属于SSR服务端构建的典型问题,常规客户端构建仅处理浏览器侧代码,不会打包Node.js专属依赖;而SSR构建会对服务端入口的所有依赖做静态分析,遇到动态require语法、缺失的Node原生模块时就会抛出对应错误,本次报错确实和新增的爬虫类服务端依赖直接相关。

解决方案

1. 先修复依赖缺失告警

执行如下命令安装缺失的依赖:

npm install fast-crc32c bufferutil utf-8-validate puppeteer-core

其中fast-crc32c是hash-stream-validation的必须依赖,bufferutil、utf-8-validate是ws库的可选依赖,puppeteer-core是puppeteer-extra的对等依赖,均需要提前安装。

2. 配置构建跳过动态依赖打包

动态require无法被webpack等构建工具静态分析,需要把这些纯服务端依赖加入构建外部依赖列表,构建时不打包这些依赖,运行时直接从node_modules加载,根据你用的框架选择对应配置:

自定义Webpack SSR场景

在服务端webpack配置文件中添加externals配置:

module.exports = {
  // 其余原有配置保持不变
  externals: [
    'clone-deep',
    'puppeteer-extra',
    'puppeteer-core',
    'node-schedule'
  ]
}

Next.js场景

在next.config.js中添加服务端外部包配置:

const nextConfig = {
  experimental: {
    serverExternalPackages: ['clone-deep', 'puppeteer-extra', 'puppeteer-core', 'node-schedule']
  }
}
module.exports = nextConfig

Nuxt3场景

在nuxt.config.ts中添加nitro外部依赖配置:

export default defineNuxtConfig({
  nitro: {
    externals: {
      external: ['clone-deep', 'puppeteer-extra', 'puppeteer-core', 'node-schedule']
    }
  }
})

3. 校验代码导入逻辑

确认爬虫相关代码仅在服务端执行,不要在客户端组件/代码中导入puppeteer、node-schedule这类仅支持Node.js环境的包,避免客户端运行时报错。

验证

配置完成后删除node_modules、package-lock.json文件,重新执行npm install安装依赖,再运行npm run build:ssr即可正常构建。

内容的提问来源于stack exchange,提问作者Sarmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 20:39:02