我使用angular2 cli创建了一个项目。我还创建了一个单独的节点js应用程序作为后端。我想将我的前端应用程序移动到节点应用程序中,以便我可以使用节点server.js运行这两个应用程序。我的server.js看起来像这样:
app.use(express.static(__dirname + '/app'));
...
app.get('*', function (req, res) {
res.sendfile('./app/src/index.html');
});
app.listen(8000);
我对来自angular2 cli的index.html看起来像这样:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>My App</title>
<base href="/">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
<app-root>Loading...</app-root>
</body>
当我现在运行节点server.js并浏览到http://localhost:8000/时,我可以看到“正在加载...”消息,但之后没有任何内容出现,并且控制台中也没有错误。
答案 0 :(得分:0)
你真正应该做的是在某个文件夹(ng build --prod -o /somefolder
)中使用角度cli创建一个prod版本(o用于输出),然后让节点静态服务该文件夹app.use(express.static...)
。你可以添加一个路由只返回index.html页面,这样你的url就不会包含整个文件夹路径(例如:localhost / somefolder / index.html)(这条路径很难看)。
这是最好的方法,因为角度应用程序仍然是独立的,并且不会与nodejs逻辑混合在一起。