繁体   English   中英

在 Google Cloud App Engine 上部署 Angular 通用应用程序时出错

[英]Error when deploying Angular Universal app on Google Cloud App Engine

当我在浏览器中运行 Cloud Shell 中的 gcloud app deploy 时,我收到一个错误 - 一遍又一遍地找不到模块“/srv/server.js”。 当我查看我的应用程序 URL 时,我也会收到 500 服务器错误。

我有一个基本的 Angular 应用程序,其中包含一个延迟加载的路径/组件,仅用于测试。 我安装了 Angular Universal,然后使用命令ng build --prod && npm run build:ssr在本地构建了我的应用程序,它将以下文件放在 dist 文件夹中:

- browser
    - all the usual Angular files like index.html etc etc
- server
    - main.js
- app.yaml
- package.json
- prerender.js
- server.js

我在 Google App Engine 上创建了一个基本应用程序,并通过单击 App Engine 控制台中的 Cloud Shell 按钮登录到我的应用程序。

然后我单击编辑器按钮,您可以在其中浏览文件并在浏览器 window 中编写命令。

在我的 app.yaml 文件中,我有:

runtime: nodejs10

在我的 package.json 文件中,我有:

{
    "scripts": {
        "start": "node server.js"
    }
}

所以在云端 Shell I go 到根目录是我所有文件所在的位置,我的 app.yaml 文件所在的位置,然后我运行gcloud app deploy

然后它将我的文件上传到存储桶,然后运行节点 server.js 脚本。 Nothing happens in the cloud shell console but when I look in the error log gcloud app logs tail -s default and I go to my app URL, it shows a 500 Server Error and logs Error: Cannot find module '/srv/server.js ' 一遍又一遍。

internal/modules/cjs/loader.js:638
Error: Cannot find module '/srv/server.js' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)      at Function.Module._load (internal/modules/cjs/loader.js:562:25) at Function.Module.runMain (internal/modules/cjs/loader.js:831:12) at startup (internal/bootstrap/node.js:283:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)

任何帮助将不胜感激。

谢谢!

我希望看到我的 Angular 应用程序在 App Engine Cloud URL 上运行。

你能尝试在你的 package.json 中指出一个主要的吗?

这似乎是一个类似的问题,您也可以在这里看到如何做到这一点。 链接

如果这不起作用,请发布您的要求,以便我们进一步了解。

希望这可以帮助。

更新:

也许这可以帮助您更好地理解问题。

首先,Node 查找 package.json 文件并检查它是否包含主要属性。 它将用于指向 package 目录中的文件,该文件将成为入口点。 如果 main 属性不存在,则 Node 依次尝试 index.js、index.json 和 index.node。

Index.js 是 Node 查找的默认文件。 您没有 index.js。 因此,您必须主要指定您使用的是什么,以便它知道入口点。

如果 server.js 是启动服务器的文件,并且它位于文件夹的根目录中,请像这样尝试。

如果 server.js 在另一个文件夹中,请尝试 /'folder'/server.js 在主文件夹中。

  "main": "server.js",
  "scripts": {
    "start": "node server.js"
  },

如果您在问题中提到的 main.js 文件上启动服务器,请将其指向那里。

我链接的问题包含有人说他们必须同时使用 start 和 main 来解决他们的问题,所以我会尝试两种方式。

让我知道。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM