Неожиданный токен

у меня есть HTML-файл :

<!DOCTYPE HTML>
<html lang="en-US" ng-app="Todo">
<head>
    <meta charset="UTF-8">
    <title>DemoAPI</title>

  <meta name="viewport">

<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.js"></script>

<link rel="stylesheet" href="./Client/css/styling.css" />
<script type="text/javascript" src="core.js"></script>

</head>

ошибка говорит:

Uncaught SyntaxError: Unexpected token <    core.js: 1

он показывает ошибку в <!doctype html> на app.html.

core.js выглядит так:

angular.module('Todo', [])

.controller('mainController', function($scope, $http)
{
    $scope.formData = {};

    // get all and show them
    $http.get('/musicians')
        .success(function(data) {
            $scope.todos = data;
            console.log(data);
        })
        .error(function(data) {
            console.log('Error: ' + data);
        });

        //get with an id
        $scope.getOneTodo = function() {
        $http.get('/musicians' + id)
            .success(function(data) {
                $scope.todos = data;
                      console.log(data);
            })
            .error(function(data) {
                console.log('Error: ' + data);
            });
    };
      // send the text to the node API
    $scope.createTodo = function() {
        $http.post('/musicians', $scope.formData)
            .success(function(data) {
                $scope.formData = {}; // clear the form 
                $scope.todos = data;
                console.log(data);
            })
            .error(function(data) {
                console.log('Error: ' + data);
            })
    };

    // delete 
    $scope.deleteTodo = function(id) {
        $http.delete('/musicians' + id)
            .success(function(data) {
                $scope.todos = data;
                      console.log(data);
            })
            .error(function(data) {
                console.log('Error: ' + data);
            });
    };

    /*
    $scope.updateTodo = function(id) {
        $http.delete('/musicians' + id)
            .success(function(data) {
                $scope.todos = data;
                      console.log(data);
            })
            .error(function(data) {
                console.log('Error: ' + data);
            });
    };*/

});

это дает мне Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.3.14/$injector/modulerr?p0=Todo&p1=Error%3A%2…gleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.14%2Fangular.min.js%3A17%3A381)

кроме того, в консоли, когда я нажимаю на core.js, он показывает содержание app.html и имя core.js.

вот снимок:

Showing app.html instead of core.js

также, как на изображении, когда я нажмите index.html это показывает app.html. Однако у меня нет файла с именем index.html и я app.html по умолчанию вместо index.html.

я попытался добавить / удалить type="text/javascript" но с этим тоже не поможет.

кроме того, статус 200 возвращается по запросу get для core.js.

Status: 200

что может быть не так?

7 ответов


ваша страница ссылается на файл Javascript в /Client/public/core.js.

этот файл, вероятно, не может быть найден, создавая либо frontpage веб-сайта или страницу ошибок HTML вместо этого. Это довольно распространенная проблема, например. веб-сайты, работающие на сервере Apache, где пути перенаправляются по умолчанию в index.php.

если это так, убедитесь, что вы замените /Client/public/core.js в тег <script type="text/javascript" src="/Client/public/core.js"></script> С правильным путем к файлу или поместите отсутствующий файл core.js на месте /Client/public/ исправить твоя ошибка!

если вы уже нашли файл с именем core.js at /Client/public/ и браузер по-прежнему создает HTML-страницу вместо этого, проверьте разрешения для папки и файла. У любого из них могут отсутствовать соответствующие разрешения.


Проверьте кодировку, я получил что-то подобное один раз из-за спецификации.

убедитесь, что ядро.файл js закодирован в utf-8 без BOM


хорошо... Я перевернул интернет вверх ногами три раза, но не нашел ничего, что могло бы помочь мне, потому что это был проект Drupal, а не другие сценарии, описанные людьми.

моя проблема заключалась в том, что кто-то в проекте добавил js, адрес которого был: <script src="http://base_url/?p4sxbt"></script> и он был прикреплен таким образом:

drupal_add_js('',
    array('scope' => 'footer', 'weight' => 5)
  );

надеюсь, что это поможет кому-то в будущем.


У нас была такая же проблема некоторое время назад, когда сайт вдруг стал выдавать эту ошибку. Причина заключалась в том, что JS include был временно отмечен # (т. е. src="#.js...").


в моем случае я получил эту ошибку, потому что строки

<script src="#"></script> 

Chrome попытался интерпретировать текущий HTML-файл как javascript.


для меня это был случай, когда путь скрипта не загружался - я неправильно связал его. Проверьте файлы сценариев-даже если ошибка пути не сообщается-на самом деле загрузить.


У меня была эта проблема в ASP.NET приложение, в частности веб-формы.

я заставлял перенаправление в глобальные.асакс, но я забыл проверить, был ли запрос для таких ресурсов, как css, javascript и т. д. Мне просто нужно было добавить следующие проверки:

VB.NET

If Not Response.IsRequestBeingRedirected _
    And Not Request.Url.AbsoluteUri.Contains(".WebResource") _
    And Not Request.Url.AbsoluteUri.Contains(".css") _
    And Not Request.Url.AbsoluteUri.Contains(".js") _
    And Not Request.Url.AbsoluteUri.Contains("images/") _
    And Not Request.Url.AbsoluteUri.Contains("favicon") Then
        Response.Redirect("~/change-password.aspx")
End If

я заставлял зарегистрированных пользователей, которые долгое время не меняли свои пароли, перенаправляться на изменение пароля.аспн страница. Я поверьте, есть лучший способ проверить это, но пока это сработало. Если я найду лучшее решение, я отредактирую свой ответ.