我正在尝试在我的计算机上运行此(https://chsakell.com/2016/01/01/cross-platform-single-page-applications-with-asp-net-5-angular-2-typescript/)教程/示例单页面应用程序(Visual Studio 2015,Win 7 Prof,Chrome浏览器),并在浏览器控制台中出现以下运行时错误试图打开相册页面:
platform-browser.umd.js:937 Error: Uncaught (in promise): ReferenceError: alertify is not defined
at resolvePromise (zone.js:558)
at zone.js:535
at ZoneDelegate.invoke (zone.js:332)
at Object.onInvoke (core.umd.js:9245)
at ZoneDelegate.invoke (zone.js:331)
at Zone.run (zone.js:225)
at zone.js:591
at ZoneDelegate.invokeTask (zone.js:365)
at Object.onInvokeTask (core.umd.js:9236)
at ZoneDelegate.invokeTask (zone.js:364)BrowserDomAdapter.logError @ platform-browser.umd.js:937ExceptionHandler.call @ core.umd.js:4392next @ core.umd.js:9971schedulerFn @ core.umd.js:9168SafeSubscriber.__tryOrUnsub @ Subscriber.ts:240SafeSubscriber.next @ Subscriber.ts:192Subscriber._next @ Subscriber.ts:133Subscriber.next @ Subscriber.ts:93Subject._finalNext @ Subject.ts:154Subject._next @ Subject.ts:144Subject.next @ Subject.ts:90EventEmitter.emit @ core.umd.js:9156onError @ core.umd.js:9394onHandleError @ core.umd.js:9266ZoneDelegate.handleError @ zone.js:336Zone.runGuarded @ zone.js:242_loop_1 @ zone.js:508drainMicroTaskQueue @ zone.js:515ZoneTask.invoke @ zone.js:437
zone.js:484 Unhandled Promise rejection: alertify is not defined ; Zone: angular ; Task: Promise.then ; Value: ReferenceError: alertify is not defined(…) ReferenceError: alertify is not defined
at new NotificationService (http://localhost:9823/lib/spa/core/services/notificationService.js:14:26)
at AppView._View_Albums_Host0.createInternal (Albums.ngfactory.js:15:35)
at AppView.create (http://localhost:9823/node_modules/@angular/core//bundles/core.umd.js:12439:25)
at ComponentFactory.create (http://localhost:9823/node_modules/@angular/core//bundles/core.umd.js:9047:40)
at ViewContainerRef_.createComponent (http://localhost:9823/node_modules/@angular/core//bundles/core.umd.js:8354:49)
at eval (http://localhost:9823/node_modules/@angular/core//bundles/core.umd.js:10295:33)
at ZoneDelegate.invoke (http://localhost:9823/node_modules/zone.js/dist/zone.js:332:29)
at Object.onInvoke (http://localhost:9823/node_modules/@angular/core//bundles/core.umd.js:9245:45)
at ZoneDelegate.invoke (http://localhost:9823/node_modules/zone.js/dist/zone.js:331:35)
at Zone.run (http://localhost:9823/node_modules/zone.js/dist/zone.js:225:44)
有问题的notificationService.ts。请注意,这会在类之外声明alertify以避免编译时通知:
import { Injectable } from '@angular/core';
declare var alertify: any;
@Injectable()
export class NotificationService {
private _notifier: any = alertify;
// irrelevant other code
}
生成的notificationService.js。似乎没有任何东西对应于“declare var alertify:any;”。可能没关系,因为alertify是一个外部JavaScript库,但仍然很奇怪:
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var core_1 = require('@angular/core');
var NotificationService = (function () {
function NotificationService() {
this._notifier = alertify;
// irrelevant other code
}());
我正在使用github的项目的最新代码:https://github.com/chsakell/aspnet5-angular2-typescript
我必须在global.json中将.NET Core版本从1.0.0-preview1-002702更改为1.0.0-preview2-003121。
遵循github自述文件中Visual Studio 2015的所有安装说明。
我在Package Manager控制台中另外运行了以下内容:' bower install alertify.js
一件看起来很奇怪的事情是,Bower(0.3.11)下的alertsify.js和NPM(1.0.12)下的版本之间的版本不匹配。我尝试在Bower.json中将alertify版本更改为1.0.12并再次安装alertify,但这失败了:
bower alertify.js#1.0.12 ENORESTARGET No tag found that was able to satisfy 1.0.12
在运行cmd“npm install”时,更改package.json中的NPM版本也会失败:
ERR!
version not found: alertify.js@0.3.11
可能有什么不对?我对所有这些材料都很陌生,所以对正在发生的事情的任何解释都会有所帮助。
更新:将从http://alertifyjs.com/下载的.js和.css文件添加到wwwroot / lib文件夹并更新index.cshtml中的样式表引用可以阻止错误显示并使通知框显示得很漂亮。我觉得这仍然是一个次优的解决方案,因为这种方法要求我手动更新alertify文件,而不是利用凉亭和NPM的全部潜力。如果您对如何改进此解决方案有任何建议,请与我们联系。
答案 0 :(得分:2)
我也看过那个教程,对我来说问题是alertify已停止,因此即使bower识别它,也不会下载.js文件。你应该google alertify.js,手动下载脚本并将它们放入你的应用程序寻找它们的文件夹中。这解决了我的问题。
另外,在你熟悉所有事情的工作原理之前(特别是在VS中的工具改进之前),我建议使用VS Code。使用它可以更轻松地启动和运行该教程。
答案 1 :(得分:2)
Bower下载 alertify.js 就好了。 NRade,我看不出你为什么会这样做
bower alertify.js#1.0.12 ENORESTARGET No tag found that was able to satisfy 1.0.12
回购使用 0.3.11 版本。在测试文件夹中创建以下 bower.json 文件并运行 bower install
{
"name": "ASP.NET",
"private": true,
"dependencies": {
"alertify.js": "0.3.11"
}
}
您应该按照here.下载alertify.js 关联的gulp tasks确保将alertify.js复制到正确的位置。