如何使PM2启动Angular Universal?

时间:2019-10-24 17:56:01

标签: angular pm2 angular-universal

我将Angular Universal应用程序部署到了生产服务器。我在PM2上运行它,并且可以正常工作。但是,它无法运行应用程序的通用端。当我查看网页的页面源时,看不到内容,但是看到了应用程序根标记。

就像PM2通过执行“ ng serve”启动常规Angular一样,而不是对Angular Universal执行“ npm run serve:ssr”。

这是我带有脚本的package.json的一部分。我是否必须在此处放置“ npm run serve:ssr”,以便当我调用“ PM2 start server.js”时运行此命令?

  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "compile:server": "webpack --config webpack.server.config.js --progress --colors",
    "serve:ssr": "node server",
    "build:ssr": "npm run build:client-and-server-bundles && npm run compile:server",
    "build:client-and-server-bundles": "ng build --prod && ng run AppName:server:production --bundleDependencies all"
  }

更新

因为我遇到403错误,所以我让Web主机将Apache的文档根目录设置为浏览器文件夹,因为那是index.html所在的位置。那是什么原因导致无法加载应用程序通用端的问题?因为现在看不到服务器文件夹?这是我的文件夹结构:

domains
    - appname.com
        - public_html
            - browser (=> this is the document root)
                - index.html
                - .htaccess
                - other files...
            - server
            - server.js
            - package.json

还有我的.htaccess文件:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d

    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^(.*) /index.html [NC,L]
</IfModule>

1 个答案:

答案 0 :(得分:0)

创建捆绑包并将所有内容部署到Web服务器之后,您只需使pm​​2启动server.js文件

这是我们在项目中使用的pm2config.json文件

{
  "apps": [
       {
    "name": "universalService",
    "script": "./dist/server.js",
    "env": {
      "NODE_ENV": "",
      "watch": false
    },
    "env_production": {
      "NODE_ENV": "production"
    },


    }
  ]
}