表达的问题.X路由器和角

Problems with express 4.x router and angular?

本文关键字:路由器 问题      更新时间:2023-09-26

我正在测试express 4。X和angular。js,我遇到了一些问题,有人遇到了这样的错误吗?

控制台Chrome:

Resource interpreted as Script but transferred with MIME type text/html: "http://localhost:8080/javascript/main.js". localhost/:5
Uncaught SyntaxError: Unexpected token < main.js:1
Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.2.17/$injector/modulerr?p0=appTmo&p1=Error%3A…gleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.2.17%2Fangular.min.js%3A18%3A203) 

我的应用程序很简单:

server.js:

var express = require('express');
var app = express();
var router  = express.Router();
var morgan = require('morgan');
app.use(router);
app.use(morgan('dev'));
app.use(express.static(__dirname+'/public'));
router.get('*',function  (req,res) {
    res.sendfile('public/index.html');
});

app.listen(8080);

index . html:

<html ng-app='app'>
<head>
    <title>App</title>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.min.js"></script>
    <script type="text/javascript" src="javascript/main.js"></script>
</head>
<body >
    <h1>test</h1>
</body>
</html>

main.js:

var app = angular.module('app',[]);

app.use(router);移至app.use(express.static(__dirname+'/public'));下方。所以你的server.js应该改成:

var express = require('express');
var app = express();
var router  = express.Router();
var morgan = require('morgan');
app.use(morgan('dev'));
app.use(express.static(__dirname+'/public'));
app.use(router);
router.get('*',function  (req,res) {
    res.sendfile('public/index.html');
});

app.listen(8080);

当您在静态呼叫之前调用app.use(router)时,路由器在请求时首先被调用。*匹配所有请求,因此它将处理所有传入请求。您看到的问题是,对于main.js的请求,正在返回index.html