需要比"更有用的错误:错误:语法错误:意外的令牌<(...)"

时间:2016-08-09 18:10:18

标签: c# asp.net angularjs angular

我正在使用Angular 2和C#.net进行开发,尽管我已经在其他平台上看到了Google和S / O的这个错误。我发誓,我曾经遇到过一个解决方案,通过暂时调整一些代码可以获得更有用的控制台错误,但是再也找不到了。

这是我每天都看到的无处不在的错误:

  

错误:SyntaxError:意外的令牌<(...)

如果我展开它,内容就像雪花:每一个都是独一无二的,但它们没有告诉你它们来自哪里。

当我得到一个更有用的错误时,我想我必须在我的Global.asax或我的systemjs.config.js中编辑一些东西,但我真的不记得了。

我想要的圣诞节是一个更有用的错误信息。这里只是踢我的systemjs.config.js和Global.asax:

的内容

systemjs.config.js

(function (global) {

    var getUrl = window.location;
    var baseUrl = getUrl.protocol + '//' + getUrl.host + '/' + getUrl.pathname.split('/')[1] + '/';

  // map tells the System loader where to look for things
    var map = {
        'app': baseUrl + 'app', // 'dist',

        '@angular': baseUrl + 'Scripts/lib_node/@angular',
        'angular2-in-memory-web-api': baseUrl + 'Scripts/lib_node/angular2-in-memory-web-api',
        'rxjs': baseUrl + 'Scripts/lib_node/rxjs'
    };

  // packages tells the System loader how to load when no filename and/or no extension
  var packages = {
    'app':                        { main: 'main.js',  defaultExtension: 'js' },
    'rxjs':                       { defaultExtension: 'js' },
    'angular2-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' }
  };

  var ngPackageNames = [
    'common',
    'compiler',
    'core',
    'forms',
    'http',
    'platform-browser',
    'platform-browser-dynamic',
    'router',
    'router-deprecated',
    'upgrade'
  ];

  // Individual files (~300 requests):
  function packIndex(pkgName) {
    packages['@angular/'+pkgName] = { main: 'index.js', defaultExtension: 'js' };
  }

  // Bundled (~40 requests):
  function packUmd(pkgName) {
    packages['@angular/'+pkgName] = { main: '/bundles/' + pkgName + '.umd.js', defaultExtension: 'js' };
  }

  // Most environments should use UMD; some (Karma) need the individual index files
  var setPackageConfig = System.packageWithIndex ? packIndex : packUmd;

  // Add package entries for angular packages
  ngPackageNames.forEach(setPackageConfig);

  // No umd for router yet
  packages['@angular/router'] = { main: 'index.js', defaultExtension: 'js' };

  var config = {
    map: map,
    packages: packages
  };

  System.config(config);

})(this);

Global.asax中

    public class WebApiApplication : System.Web.HttpApplication
    {
        private const string RootUrl = "~/Home/Index";
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }

        protected void Application_BeginRequest(Object sender, EventArgs e)
        {
            var path = Request.Url.AbsolutePath;

            // To allow access to api via url:
            var isApi = path.StartsWith("/CW/api", StringComparison.InvariantCultureIgnoreCase);
            // To allow direct access to my account controller:
            var isAccount = path.StartsWith("/CW/account", StringComparison.InvariantCultureIgnoreCase);
            if (isApi || isAccount)
            {
                return;
            }

            if (!System.IO.File.Exists(Context.Server.MapPath(path)))
                Context.RewritePath(RootUrl);
        }
    }

修改 大部分时间都有效的一件事虽然不是全部,但是暂时注释掉我的Application_BeginRequest(),因为它似乎偶尔会在浏览器需要JS时将HTML提供给浏览器...不是最好的解决方案,而是一个有用的解决方法

1 个答案:

答案 0 :(得分:1)

事实上,在此级别可以帮助您的是与错误消息相关联的请求。

例如:

  

angular2-polyfills.js:1243 Uncaught SyntaxError:意外的令牌<    评估http://localhost:3000/@angular/core错误加载http://localhost:3000/app/boot.js

这意味着您在尝试加载http://localhost:3000/angular2/angular2时遇到404错误。 404的有效负载是HTML而不是JS,因此无法解析。

此错误由以下行触发:

import { Component } from '@angular/core';

SystemJS执行请求http://localhost:3000/angular2/angular2以根据其配置(文件systemjs.config.js)加载模块。

有关详细信息,请参阅此文章: