【问题标题】:The Angular Universal (SSR) cannot integrate with the external libraries like puppeteer, bulljsAngular Universal (SSR) 无法与 puppeteer、bulljs 等外部库集成
【发布时间】:2022-01-10 10:28:18
【问题描述】:

这只是为了描述问题和分享我的解决方案,我在上面卡了很多时间。

这个问题是在我升级 Angular 10 -> 11 并将构建器从 udk:udk-runner 更改为 @angular-devkit 之后发生的

我面临的问题是当我将 angular.json 中的字段 bundleDependencies 设置为 true 时。 Puppeteer 无法启动,错误无法启动浏览器

然后我发现它也发生在我在服务器端使用的其他外部库上,例如 BullJS Bull-Board Puppeteer-Cluster 并出现以下错误

演示问题的 Github 源https://github.com/phattranky/angular-ssr-error-with-pupepteer

【问题讨论】:

    标签: angularjs puppeteer server-side-rendering angular-universal bull


    【解决方案1】:

    解决方案非常简单,您只需在bundleDependencies 字段下方添加externalDependencies,这是我们正在使用的库。

    "externalDependencies": ["puppeteer", "puppeteer-cluster", "bull", "bull-board"]
    

    示例:

    externalDependencies 是什么?

    https://github.com/angular/angular-cli/blob/master/packages/angular_devkit/build_angular/src/builders/server/schema.json

    如果您有更好的解决方案和任何反馈,请为我分享。谢谢

    【讨论】:

    • 非常感谢您!由于与我遇到的相同问题,如果有人发现此问题:“错误:评估失败:ReferenceError:_waitForPredicatePageFunction 未定义”将我带到这里。添加评论,因此它可能会出现在搜索中。我找到了解决初始问题(Chrome 无法启动)的方法,方法是像这样传递 executablePath:puppeteer.launch({executablePath: /.../node_modules/puppeteer/.local-chromium/linux-v3r510n/chrome-linux /chrome"}); 这使一些 puppeteer 工作,但会导致后续问题。您的解决方案要好得多。
    猜你喜欢
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 2023-02-15
    • 2022-10-07
    • 2019-07-19
    • 2018-08-20
    • 2020-12-16
    • 2018-12-03
    相关资源
    最近更新 更多