这里是我的节点server.js
,它在项目根目录下,有自己的npm配置。所有的Angular文件都在/client
中,因此在ng build
之后,dist将在client/dist
中
的数据
const express = require('express');
const colors = require('colors');
const bodyParser = require('body-parser');
const path = require('path');
const cors = require('cors');
const PORT = process.env.port||'3200';
// init "app"
const app = express();
app.use(cors({origin: `http://localhost:4200`}));
// angular entry point
app.use(express.static(path.join(__dirname, 'client/dist')));
//parse incoming data before routes
app.use(bodyParser.json())
// api routes
app.use('/api',require('./api/api'));
// error middleware
app.use(function(err, req, res, next){
console.log(`${err}`.red.bold)
res.status(422).send({error: err.message });
});
// listen
app.listen(PORT, function(){
console.log(`app running on ${PORT}...`.magenta);
});
字符串
当我转到服务器http://localhost:3200/
时,我看到了我的angular应用程序。当我转到http://localhost:3200/api/someExpressRoute
时,我得到了我的API函数。太好了
现在我需要弄清楚如何服务角路由。例如http://localhost:3200/about
是我的角单页应用程序的一部分。但是当我去那个网址时,服务器不知道该怎么做。
如何配置此服务器以将http://localhost:3200/*
处理为从索引提供服务的Angular 路由?
2条答案
按热度按时间zdwk9cvp1#
下面是我如何通过nodejs服务我的angular应用程序:
字符串
在为应用程序提供服务时,确保所有前端dist文件都与此文件位于同一个文件夹中(我称之为
index.js
)plupiseo2#
使用NodeJs Express服务Angular应用
如果你想使用NodeJ来服务你的angular应用,你需要使用expressJs的
res.sendFile()
函数来服务你的Angular构建的index.html
文件。更多细节请参见文档。在此之前,你需要确保Express内置的中间件
static
指向一个包含Angular在编译过程中构建的所有文件的文件夹(通常是前端应用程序的dist
文件夹)。服务Angular 路由
如果你想让你的Angular Router工作,你需要将所有传入的请求重定向到前端。你也可以添加一些验证,比如
@Syntactic Fructose
建议,来检查请求中的html或文件。示例
这只是一个基本的例子,
字符串
评论
为了更简单地部署,我建议您使用
.env
变量作为frontendFiles
变量。