【问题标题】:Unexpected token < in first line of HTMLHTML 第一行中出现意外的标记 <
【发布时间】:2015-10-10 08:09:42
【问题描述】:

我有一个 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

它在app.html&lt;!doctype html&gt; 处显示错误。

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&amp;p1=Error%3A%2…gleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.14%2Fangular.min.js%3A17%3A381)

此外,在控制台中,当我单击core.js 时,它会显示app.html 的内容并将其命名为core.js

这是快照:

另外,如图所示,当我点击index.html 时,它会显示app.html。但是,我没有任何名为 index.html 的文件,并且默认加载 app.html 而不是 index.html

我已尝试添加/删除 type="text/javascript",但也没有任何帮助。

此外,core.js 的获取请求返回状态 200。

可能出了什么问题?

【问题讨论】:

  • core.js的内容是什么?
  • 问题不在HTML;它在 core.js 中。尝试获取最新版本(假设 core.js 是一个框架;否则,请检查您的代码)
  • core.js 是否还包含类似“404 - 未找到文件”之类的内容?
  • @Xufox:请看更新。
  • @AustinBrunkhorst:请检查更新。

标签: javascript html angularjs syntax-error uncaught-exception


【解决方案1】:

您的页面引用了一个位于 /Client/public/core.js 的 Javascript 文件。

可能找不到此文件,而是生成网站的首页或 HTML 错误页面。这是一个非常常见的问题,例如。在 Apache 服务器上运行的网站,其路径默认重定向到 index.php

如果是这种情况,请确保将脚本标记 &lt;script type="text/javascript" src="/Client/public/core.js"&gt;&lt;/script&gt; 中的 /Client/public/core.js 替换为正确的文件路径,或者将丢失的文件 core.js 放在位置 /Client/public/ 以修复错误!

如果您已经在/Client/public/ 找到了一个名为core.js 的文件,而浏览器仍会生成一个HTML 页面,请检查文件夹和文件的权限。其中任何一个都可能缺少适当的权限。

【讨论】:

  • @RobG :这取决于您的服务器配置。在 Apache 服务器上,当没有找到文件时,引用“index.php”的所有路径是很常见的。在这种情况下,丢失的 .js 文件将替换为您网站首页的内容或 404 错误页面,这同样取决于您的配置。
  • 好的,你的回答现在解释了。 ;-)
  • @simikaur :那么您解决了最初的问题还是没有解决?我不清楚现在到底发生了什么!另外,您能否将您的代码发布在jsfiddle.netjsbin.com 上?这让我们更容易看到发生了什么!
  • 我的机器出现了延迟,我不小心将我的 Scripts 文件夹移到了另一个文件夹中。
  • 我正在做一个 asp.net mvc 5 网站,这发生在我身上,因为我在搞乱并粘贴到我的 web 配置文件中,这导致所有 css mime 类型都是 text/html 和我所有的 js 文件 -yes- 都包含其中的整个站点,当然,正如您所期望的那样,有 100% 的错误。
【解决方案2】:

在我的情况下,由于一行而出现此错误

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

Chrome 尝试将当前的 HTML 文件解释为 javascript。

【讨论】:

    【解决方案3】:

    我在使用 WordPress 网站时遇到了这个错误,但我发现我的开发人员工具源中显示了两个索引。

    Chrome Developer Tool Error 所以我想,如果从第一行代码开始有两个索引,那么就会有一个复制,它们会相互冲突。所以我想那可能是我的缓存插件工具对 HTML 的缩小。

    所以我关闭了 HTML 缩小设置并删除了我的缓存。和噗!成功了!

    【讨论】:

      【解决方案4】:

      检查你的编码,我曾经因为 BOM 得到过类似的东西。

      确保 core.js 文件以 utf-8 编码没有 BOM

      【讨论】:

        【解决方案5】:

        嗯...我把互联网颠倒了三遍,但没有找到任何可能对我有帮助的东西,因为这是一个 Drupal 项目,而不是人们描述的其他场景。

        我的问题是项目中有人添加了一个js,他的地址是:&lt;script src="http://base_url/?p4sxbt"&gt;&lt;/script&gt;,并且是这样附加的:

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

        希望这对将来的某人有所帮助。

        【讨论】:

          【解决方案6】:

          前段时间我们遇到了同样的问题,一个网站突然开始出现这个错误。原因是 js 包含临时用 # 标记(即 src="#./js...")。

          【讨论】:

            【解决方案7】:

            我在 ASP.NET 应用程序中遇到了这个问题,特别是在 Web 窗体中。

            我在 Global.asax 中强制重定向,但我忘记检查请求是否针对 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
            

            我强制将长时间未更改密码的登录用户重定向到 change-password.aspx 页面。我相信有更好的方法来检查这一点,但现在,这行得通。如果我找到更好的解决方案,我会编辑我的答案。

            【讨论】:

              【解决方案8】:

              对我来说,这是脚本路径无法加载的情况 - 我错误地链接了它。检查你的脚本文件——即使没有报告路径错误——实际加载。

              【讨论】:

                【解决方案9】:

                我遇到了同样的问题。我在 iis 上发布了 angular/core 应用程序。

                更改应用程序池的标识解决了我的问题。现在身份是 LocalSystem

                【讨论】:

                  【解决方案10】:

                  如果周围的人仍然像我一样遇到这个问题。尝试将这行代码添加到您的标题中。

                  <base href="/" />
                  

                  它会将您的 html 文件与您正在设置的 Nodejs 上的静态目录对齐。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2016-08-06
                    • 1970-01-01
                    • 2013-06-07
                    • 1970-01-01
                    • 1970-01-01
                    • 2016-01-07
                    相关资源
                    最近更新 更多