在Google Cloud App Engine上部署Angular Universal应用程序时发生错误

问题描述 投票:0回答:1

当我在浏览器的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按钮登录了我的应用。

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

在我的app.yaml文件中:

runtime: nodejs10

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

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

因此在Cloud Shell中,我进入了所有文件所在的根目录,并找到了我的app.yaml文件所在的目录,然后运行gcloud app deploy

然后它将我的文件上传到存储桶,然后运行节点server.js脚本。在云shell控制台中什么都没有发生,但是当我查看错误日志gcloud app logs tail -s default并转到我的应用URL时,它显示500服务器错误并记录错误:不能一遍又一遍地找不到模块'/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云URL上运行。

node.js google-app-engine yaml angular-universal
1个回答
0
投票

您可以尝试在package.json中指向一个主文件吗?

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

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

希望这会有所帮助。

UPDATE:

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

首先,Node查找package.json文件,并检查它是否包含main属性。它将用于指向包目录内的文件,该文件将作为入口点。如果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来解决问题,所以我会尝试两种方式。

让我知道。

© www.soinside.com 2019 - 2024. All rights reserved.