【问题标题】:Angular 1.5.x "angular.min.js:1 Uncaught SyntaxError: Unexpected token <" ErrorAngular 1.5.x“angular.min.js:1 Uncaught SyntaxError: Unexpected token <”错误
【发布时间】:2016-11-27 09:50:05
【问题描述】:

我正在关注“MEAN Machine”一书,我正在尝试使用 Express 设置 Angular,但在调用 Angular.min.js 时一直遇到此错误:

"Uncaught SyntaxError: Unexpected token <"

我已经搜索了一个小时左右,但无法修复它。

Folder Structure

这是我的快速代码:

var express = require('express'),
    app = express(),
    bodyParser = require('body-parser'),
    morgan = require('morgan'),
    cors = require('cors'),
    path = require('path'),
    config = require('./config.js');

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(cors());
app.use(morgan('dev'));

app.use(express.static(__dirname + '/public'));

app.get('*', function(req, res) {
    res.sendFile(path.join(__dirname + '/public/app/index.html'));
});

app.listen(config.devPort);
console.log('Running on ' + config.devPort);

这里是我的 index.html 中调用 Angular 的地方:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Homepage</title>
        <base href="/">
    </head>

    <body ng-app="sample">
        <h1>Welcome to the homepage!</h1>
        <div ng-controller="ScheduleCtrl as schedule">
            <h1 ng-bind="schedule.test"></h1>
        </div>

        <!-- inject:js -->
        <script src="/public/assets/lib/angular/angular.min.js"></script>
        <script src="/public/app/app.js"></script>
        <script src="/public/app/modules/schedule/schedule.controller.js"></script>
        <!-- endinject -->   
    </body>
</html>

这是 app.js 文件:

(function() {
    'use strict';

    angular
        .module('sample', []);

})();

这是 schedule.controller.js 文件:

(function() {
    'use strict';

    angular
        .module('sample'),
        .controller('ScheduleCtrl', ScheduleCtrl);

    ScheduleCtrl.$inject = [];

    function ScheduleCtrl() {
        var vm = this;

        vm.test = "Hello World!";
    };
})();

编辑: 我检查了我的控制台,文件的路径给了我一个 304:

GET / 304 1.934 ms - -
GET /public/assets/lib/angular/angular.min.js 304 2.262 ms - -
GET /public/app/app.js 304 2.578 ms - -
GET /public/app/modules/schedule/schedule.controller.js 304 2.855 ms - -

【问题讨论】:

  • 好像你在某处多了一个&lt;。尝试使用 Angular 的非缩小版本,错误输出应该会告诉你它抱怨的那一行。
  • @Lex 我将它切换到非缩小版本,但错误输出并没有告诉我它抱怨的行。错误输出与缩小版相同。
  • 你能发一点schedule.controller.js吗?您掌握了诊断此问题的所有关键,并且错误消息非常清楚,有一个 &lt; 不应该出现。
  • @Lex 我已经编辑了我的帖子并添加了 schedule.controller.js 文件。
  • 那我就没主意了。抱歉,我无法提供帮助。

标签: angularjs express


【解决方案1】:

尝试将脚本放在 head 标签中而不是 body 标签中(或在 body 标签之前),在包含脚本之前您正在使用 AngularJS 语法(ng-app 等)

【讨论】:

  • 感谢您的回复,但我将脚本标签移到了头标签,但仍然出现错误。
  • 啊哈你在body标签之前试过了吗?我也刚刚注意到,您是否在脚本中定义了角度模块和控制器?
  • 在 app.js 文件中,我将模块定义为: angular.module('sample', []);并且控制器已经在 schedule.controller.js 文件中设置好了
  • 啊哈我刚看到app.js被包含了,还是不行?你能发布你的 app.js 和 schedule.controller.js 吗?
  • 你的 schedule.controller.js 语法不正确,试试这个格式:w3schools.com/angular/tryit.asp?filename=try_ng_module
【解决方案2】:

这可能是错误:

angular
    .module('sample'), <-- this comma should not be here
    .controller('ScheduleCtrl', ScheduleCtrl);

【讨论】:

  • 啊,我已经删除了逗号,但仍然显示错误。
  • 您确定正在加载更新的 .js 并且您的浏览器不只是从缓存中提取它吗?
猜你喜欢
  • 2018-02-04
  • 1970-01-01
  • 2017-11-16
  • 2015-04-21
  • 2015-05-07
  • 2018-06-23
  • 1970-01-01
  • 2016-09-19
  • 2017-11-24
相关资源
最近更新 更多