【发布时间】:2019-06-26 22:38:39
【问题描述】:
我想在 aws 上部署我的 Angular 通用应用程序。
据我了解,我只能在弹性 beanstalk 上部署我的应用程序,因为它需要一个 Web 服务器才能运行。 (这意味着没有 S3 部署)。
当我部署我的应用程序时,出现以下错误:
错误:无法在视图目录中查找视图“索引” “/var/app/current/dist/浏览器” 在 Function.render (/var/app/current/server.js:122227:17) 在 ServerResponse.render (/var/app/current/server.js:131120:7) 在 /var/app/current/server.js:138:9 在 Layer.handle [as handle_request] (/var/app/current/server.js:124007:5) 在下一个(/var/app/current/server.js:123755:13) 在 Route.dispatch (/var/app/current/server.js:123730:3) 在 Layer.handle [as handle_request] (/var/app/current/server.js:124007:5) 在 /var/app/current/server.js:123230:22 在参数 (/var/app/current/server.js:123303:14) 在参数 (/var/app/current/server.js:123314:14)
这是我到目前为止所做的:
- 在我的 Angular 项目中,使用命令
npm run build:ssr创建生产版本 - 创建我的 dist 目录的存档
- 在 Elastic Beanstalk 上,使用 node.js 创建一个新应用程序并上传我的存档
还有我的server.ts 文件:
import 'zone.js/dist/zone-node';
import 'reflect-metadata';
import { enableProdMode } from '@angular/core';
// Express Engine
import { ngExpressEngine } from '@nguniversal/express-engine';
// Import module map for lazy loading
import { provideModuleMap } from '@nguniversal/module-map-ngfactory-loader';
import * as express from 'express';
import { join } from 'path';
// Faster server renders w/ Prod mode (dev mode never needed)
enableProdMode();
// Express server
const app = express();
const PORT = process.env.PORT || 4000;
const DIST_FOLDER = join(process.cwd(), 'dist/browser');
// * NOTE :: leave this as require() since this file is built Dynamically from webpack
const { AppServerModuleNgFactory, LAZY_MODULE_MAP } = require('./dist/server/main');
// Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine)
app.engine('html', ngExpressEngine({
bootstrap: AppServerModuleNgFactory,
providers: [
provideModuleMap(LAZY_MODULE_MAP)
]
}));
app.set('view engine', 'html');
app.set('views', DIST_FOLDER);
// Example Express Rest API endpoints
// app.get('/api/**', (req, res) => { });
// Server static files from /browser
app.get('*.*', express.static(DIST_FOLDER, {
maxAge: '1y'
}));
// All regular routes use the Universal engine
app.get('*', (req, res) => {
res.render('index', { req });
});
// Start up the Node server
app.listen(PORT, () => {
console.log(`Node Express server listening on http://localhost:${PORT}`);
});
我做错了什么?
感谢您的帮助。
【问题讨论】:
标签: angular amazon-elastic-beanstalk angular-universal