我用angular.js测试表达4.x并且我遇到了一些问题,有人得到这样的错误?
控制台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',[]);
答案 0 :(得分:1)
将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)
时,路由器会首先在请求时被呼叫。 *
匹配所有,因此它将处理所有传入的请求。您看到的问题是,index.html
的请求正在返回main.js
。