意外的令牌<在HTML的第一行

时间:2015-07-21 02:36:30

标签: javascript html syntax-error uncaught-exception

我有一个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>的{​​{1}}处的错误。

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

以下是快照:

Showing app.html instead of core.js

此外,与图片一样,当我点击core.js时,会显示index.html。但是,我没有任何名为app.html的文件,我默认加载index.html而不是app.html

我尝试添加/删除index.html,但也没有帮助。

此外,在type="text/javascript"的获取请求中返回状态200。

Status: 200

可能出现什么问题?

10 个答案:

答案 0 :(得分:58)

您的网页引用/Client/public/core.js上的Javascript文件。

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

如果是这种情况,请确保使用正确的文件路径替换脚本标记/Client/public/core.js中的<script type="text/javascript" src="/Client/public/core.js"></script>,或将丢失的文件core.js放在{{1}位置修复你的错误!

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

答案 1 :(得分:3)

我在WordPress网站上遇到了此错误,但是我发现开发人员工具源中显示了两个索引。

Chrome Developer Tool Error 因此,我想到,如果在代码的第一行开始有两个索引,则存在一个复制,并且它们彼此冲突。所以我以为那也许是我的缓存插件工具中的HTML压缩代码。

因此,我关闭了HTML缩小设置并删除了我的缓存。和po!奏效了!

答案 2 :(得分:2)

检查你的编码,由于BOM,我得到了类似的东西。

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

答案 3 :(得分:1)

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

我的问题是项目中的某个人添加了一个js,他的地址是:<script src="http://base_url/?p4sxbt"></script>并且它以这种方式附加:

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

希望这将有助于将来。

答案 4 :(得分:1)

我们之前遇到了同样的问题,网站突然开始出现此错误。原因是js包含暂时用#标注(即src =&#34;#。/ js ...&#34;)。

答案 5 :(得分:1)

在我的情况下,由于行

,我收到了此错误
<script src="#"></script> 

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

答案 6 :(得分:1)

我在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 页。我相信有一种更好的方法可以检查此问题,但目前为止,此方法可行。如果我找到更好的解决方案,请修改答案。

答案 7 :(得分:0)

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

答案 8 :(得分:0)

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

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

答案 9 :(得分:-1)

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

<base href="/" />

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