Sha*_*ews 2 node.js express angular
我是 NodeJS 和 Express 的新手,但我想要一个简单的“/”路由到包含 app-root 标签的 Angular 的默认 index.html (client/src/index.html)。
'/' 路由成功地为 index.html 文件提供服务,但它不会将 'app-root' 标签扩展/加载到组件的 html 中,所以我只是得到空白页面。
我不确定为什么从 Express 路由时它无法解析 app-root 标记。只有当我通过 'ng serve' 运行 Angular 时,index.html 才会成功加载 app-root 标签的内容。
我的结构如下:
/client
/e2e
/node_modules
/app
app.component.css/html/ts
app.module.ts
/src
index.html
main.ts
package.json
server.js
Run Code Online (Sandbox Code Playgroud)
服务器.js
var express = require('express');
var path = require('path');
var port = 80;
var app = express();
// set static folder
app.use(express.static(path.join(__dirname, '/client')));
app.get('/', function(req, res, next){
res.sendFile(__dirname + '/client/src/index.html');
});
app.listen(port, function(){
console.log("Server started on port " + port);
});
Run Code Online (Sandbox Code Playgroud)
小智 5
看起来您没有执行 'ng build' 您的 angular 应用程序,因为 main.ts 仍然存在。
当您执行 'ng serve' 时,angular 会使用 webpack-dev-server 编译并提供它。
如果你想从你的节点为你的应用程序提供静态服务,你需要一个编译的 angular 应用程序。
您可以执行以下操作
$ cd client && ng build
Run Code Online (Sandbox Code Playgroud)
将在您编译的 angular 应用程序所在的位置创建 client/dist 目录,您可以在您的 express 上提供该目录
您可以像下面一样更改 server.js 中的目录
app.use(express.static(path.join(__dirname, '/client/dist')));
res.sendFile(__dirname + '/client/dist/index.html');
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
1630 次 |
| 最近记录: |