我正在使用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提供给浏览器...不是最好的解决方案,而是一个有用的解决方法的
答案 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
)加载模块。
有关详细信息,请参阅此文章: