【问题标题】:Angular 2 'app-root' not loading on ExpressJS routeAngular 2 'app-root' 未加载到 ExpressJS 路由上
【发布时间】:2018-01-30 01:36:51
【问题描述】:

我是 NodeJS 和 Express 的新手,但我想要一个简单的“/”路由到 Angular 的默认 index.html (client/src/index.html),其中包含 app-root 标记。

“/”路由成功地为 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

server.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);
});

【问题讨论】:

  • 您需要设置类似 on get app/root return that directory back to the request
  • 你的 index.html 文件是什么样的?
  • 抱歉,你能告诉我那会是什么样子吗?
  • Angular index.html是默认的html模板,body中只有一个app-root标签,组件的html是创建模板时的默认模板

标签: node.js angular express


【解决方案1】:

看起来您没有“构建”您的 Angular 应用程序,因为 main.ts 仍然存在。

当你执行 'ng serve' 时,Angular 编译并使用 webpack-dev-server 提供它。

如果您想从您的节点以静态方式提供您的应用程序,您需要一个已编译的 Angular 应用程序。

您可以执行以下操作

$ cd client && ng build

将在您编译的 Angular 应用程序所在的位置创建 client/dist 目录,您可以在 express 上提供该目录

您可以更改 server.js 中的目录,如下所示

app.use(express.static(path.join(__dirname, '/client/dist')));
res.sendFile(__dirname + '/client/dist/index.html');

希望对你有帮助

【讨论】:

  • 啊,我明白了,但是一旦我得到 dist 文件夹并在该文件夹中启动服务器,我成功地返回了 index.html,但它是一个空白的 html 页面,并出现以下错误:i.imgur.com/ocS7IMi.png
  • 其实通过改变 'app.use(express.static(path.join(__dirname, '/client')));'到 'app.use(express.static(path.join(__dirname, '/')));'有用。这条线到底是做什么的?它是否加载了“/”目录中的文件以便我能够使用它们?
  • express.static 让您提供 html 和 javascript 文件。编译的 Angular 文件现在都只是静态 html 和 javascript 文件,可以在任何 Web 服务器(nginx、apache 以及在您的情况下为静态服务的节点)上提供服务。如果你还没有移动你的 dist 文件,那可能是因为 angular-cli 版本。看看这个link
猜你喜欢
  • 2019-12-08
  • 1970-01-01
  • 2017-04-07
  • 1970-01-01
  • 2015-02-09
  • 2017-08-27
  • 2017-10-19
  • 2017-01-27
  • 1970-01-01
相关资源
最近更新 更多