【问题标题】:Angular 12 Universal on Google App Engine error: ./my-app/server/main.js: Syntax error: "(" unexpectedGoogle App Engine 上的 Angular 12 Universal 错误:./my-app/server/main.js:语法错误:“(”意外
【发布时间】:2021-11-14 01:50:06
【问题描述】:

我有一个已转换为 Universal 的 Angular 12 应用程序。
稍微调整一下后,它可以按预期在本地工作。
我部署到 Google AppEngine 但得到 '500 Error: Server Error'
查看日志我看到了错误:
./my-app/server/main.js: Syntax error: "(" unexpected.

我的 app.yaml 很简单:
runtime: nodejs14
entrypoint: ./my-app/server/main.js

我尝试使用和不使用 --prod 进行构建,但仍然遇到相同的错误。
任何帮助将不胜感激...

更新
app.yaml 中删除 entrypoint 时出现错误:

Error: Cannot find module '/workspace/server.js' at 
Function.Module._resolveFilename (internal/modules/cjs/loader.js:889:15) at 
Function.Module._load (internal/modules/cjs/loader.js

这是 package.json 的脚本部分:

{  
  "name": "my-app",  
  "version": "1.0.0",  
  "scripts":   
{  
    "ng": "ng",  
    "start": "ng serve",  
    "build": "ng build",  
    "prod-build": "ng build --prod",  
    "test": "ng test",  
    "lint": "ng lint",  
    "e2e": "ng e2e",  
    "dev:ssr": "ng run my-app:serve-ssr",  
    "serve:ssr": "node dist/my-app/server/main.js",  
    "build:ssr": "ng build && ng run my-app:server",  
    "prerender": "ng run my-app:prerender"  
  },  
...

【问题讨论】:

  • 根据这个documentation Entrypoint 通过在您的应用程序启动时执行 entrypoint 命令来覆盖默认启动行为。要让您的应用接收 HTTP 请求,入口点元素应包含一个命令,该命令可启动在端口 8080 上侦听的网络服务器。如果您未指定入口点,App Engine 将使用您的 package.json 文件中指定的启动脚本。跨度>
  • 当我删除入口点时出现错误:Error: Cannot find module '/workspace/server.js' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:889:15) at Function.Module._load (internal/modules/cjs/loader.js 我添加了 package.json 的脚本部分
  • 您好,能否提供您的文件夹结构?而且我确实尝试重现该问题,当我提供入口点时收到 500 服务器错误,但当我删除它时它工作正常。
  • 当我删除入口点并且在 package.json 中只有“启动”脚本时,它对我不起作用。请参阅下面的答案。

标签: angular google-app-engine universal app.yaml server-error


【解决方案1】:

终于解决了(在与 Angular.io 的好人讨论之后):
如果我将 app.yaml 更改为以下内容,它会像宣传的那样工作:

runtime: nodejs14
entrypoint: node dist/my-app/server/main.js

文件夹结构正是您从通用代码生成器中获得的:
{您的项目}
分布
我的应用程序
浏览器
... 常规 Angular 站点文件 ...
服务器
main.js
...

在 AppEngine 中,您要上传并同步到项目的结构是:
{您的项目}
应用程序.yaml
分布

【讨论】:

    猜你喜欢
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 2020-07-07
    • 2011-08-11
    相关资源
    最近更新 更多