Express.js继续将Angular2 index.html作为文本

时间:2016-05-29 18:35:29

标签: node.js express angular

我似乎无法使用Express.js来提供我的前端Angular2应用程序。它只是继续将index.html作为文本提供,并且脚本似乎不会加载。

重现步骤:

npm install angular-cli -g
ng new ng2app && cd ng2app
npm install express --save && npm install
touch src/server.js

更新server.js文件

// src/server.js
var express = require('express');
var app = express();

app.set('port', (process.env.PORT || 5000));

app.get('/', function(req, res) {
  res.sendFile(__dirname + '/index.html')
})

app.listen(app.get('port'), function() {
  console.log('Node app is running on port', app.get('port'));
});

运行服务器

node src/server.js
# => Node app is running on port 5000

http://localhost:5000/

问题

浏览器在页面上吐出来并且从不做任何事情(即它没有加载我的前端angular2应用程序)

  

{{#unless environment.production}} {{/ unless}}正在加载... {{#each scripts.polyfills}} {{/ each}}

此页面上还有以下浏览器控制台错误

  

获取http://localhost:5000/ember-cli-live-reload.js

     

(指数):19获取http://localhost:5000/%7B%7B.%7D%7D

     

(index):21未捕获的ReferenceError:未定义系统

我做错了什么? P.S角度前端部分没有任何问题。我知道这一点,因为做npm start工作和ng2app加载就像它应该的那样好。

1 个答案:

答案 0 :(得分:0)

这是我从种子项目中获得的最小值:https://github.com/spboyer/quickstart-ng-cli

var express = require('express'),
path = require('path'),
fs = require('fs');
var app = express();
var staticRoot = __dirname + '/';
app.set('port', (process.env.PORT || 3000));
app.use(express.static(staticRoot));
app.use(function(req, res, next){
// if the request is not html then move along
var accept = req.accepts('html', 'json', 'xml');
if(accept !== 'html'){
    return next();
}
// if the request has a '.' assume that it's for a file, move along
var ext = path.extname(req.path);
if (ext !== ''){
    return next();
}
fs.createReadStream(staticRoot + 'index.html').pipe(res);
});
app.listen(app.get('port'), function() {
console.log('app running on port', app.get('port'));
});

对我来说,看起来你实际上并没有运行角度cli构建。