我将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>
答案 0 :(得分:0)
创建捆绑包并将所有内容部署到Web服务器之后,您只需使pm2启动server.js文件
这是我们在项目中使用的pm2config.json
文件
{
"apps": [
{
"name": "universalService",
"script": "./dist/server.js",
"env": {
"NODE_ENV": "",
"watch": false
},
"env_production": {
"NODE_ENV": "production"
},
}
]
}