Node / Angular app Uncaught SyntaxError:意外的令牌<

时间:2015-07-18 21:26:36

标签: javascript angularjs node.js

我正在关注this node/angular tutorial并收到以下错误:

enter image description here

我通过节点引导我的应用程序,该节点呈现索引页面:

module.exports = function(app) {

    app.get('*', function(req, res) {
        res.sendfile('./public/index.html');
        ...
    });

呈现:

<html ng-app="DDE">
<head>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js"></script>
    <script src="bower_components/angular/angular.js"></script>
    <script src="bower_components/angular-route/angular-route.js"></script>

    <script src="js/app.js"></script>
    <script src="js/controllers/main.js"></script>

</head>
<body>
    This is the index page
    <div ng-view></div>

我希望Node处理初始页面加载,但是Angular可以处理其余的路由。问题在于:似乎我的角度路由不起作用。我在那里放了一个自我执行fn run()进行测试,但它没有被调用。

我只是想测试显示testpage.html模板:

app.js文件:

angular
    .module('DDE', [
        'ngRoute'
    ])
    .config(['$routeProvider',
        function($routeProvider) {
            $routeProvider.
                when('/test', {
                    run : (function() {
                        alert('hit');
                    })(),
                    templateUrl: '../html/partials/testpage.html'
                }).
                otherwise({
                    redirectTo: '/test'
                });
        }
    ]);

角度误差不是很有帮助。我不确定Unexpected token <是什么意思,因为我无法找到我在任何地方添加额外<的地方。

编辑:

app.get('/', function(req, res) {
    res.send('./public/index.html'); 
});

enter image description here

由于路径正确,它应该能够在凉亭组件中找到东西:

root/bower_components/angular/angular.js
root/bower_components/angular-route/angular-route.js

2 个答案:

答案 0 :(得分:16)

您在服务器上的app文件中缺少某些设置来处理对服务器发出的所有请求。这是一个基本的示例工作快速文件,您可以根据自己的环境进行修改:

var express = require('express');
var app = express();

app.use('/js', express.static(__dirname + '/js'));
app.use('/bower_components', express.static(__dirname + '/../bower_components'));
app.use('/css', express.static(__dirname + '/css'));
app.use('/partials', express.static(__dirname + '/partials'));

app.all('/*', function(req, res, next) {
    // Just send the index.html for other files to support HTML5Mode
    res.sendFile('index.html', { root: __dirname });
});

此文件使用express.static来提供特定目录中的任何内容,而不管名称或类型如何。另请注意,Express use语句按顺序处理,并且第一次匹配,第一次匹配后的任何匹配都将被忽略。因此,在此示例中,如果它不是/js/bower_components/css/partials目录中的文件,则会返回index.html

答案 1 :(得分:0)

通过将我的server.js文件从DIST目录移动到上面的目录中,我能够解决意外令牌的问题。

所以我的文件夹/文件结构如下:

  • webroot-根文件夹

    • server.js

    • dist(文件夹)

      • 浏览器(子文件夹)

      • 服务器(子文件夹)