【问题标题】:Angular 2 test cannot load custom packageAngular 2 测试无法加载自定义包
【发布时间】:2017-06-15 17:49:12
【问题描述】:

我正在按照官方 angular2 指南对现有项目进行测试。

我使用自定义库downloadjs,它在我运行应用程序时运行良好。但是如果测试运行,我会在控制台中收到错误:

"__zone_symbol__zoneAwareStack": "Error: (SystemJS) XHR error (404 Not Found) loading node_modules/downloadjs/download.js\n\tError: XHR error (404 Not Found) loading node_modules/downloadjs/download.js\n\tError loading node_modules/downloadjs/download.js as \"downloadjs\" from app/utilities/file-handler.utility.js"

我使用npm install downloadjs 获取工具。

file-handler.utility.js 如下:

import {Injectable} from "@angular/core";
import downloadjs=require("downloadjs");
@Injectable()
export class FileHandler{

  public static download(fileToDownload: any) {
    downloadjs(fileToDownload, "filename.txt" ,"text/plain");
  }   
}

我在同一个文件夹中创建了一个 defs.spec.ts 文件:

declare module 'downloadjs'{
    function download(data:any, strFileName:string, strMimeType:string):void;

        export = download;
}

并添加了systemjs.config.js的路径:

 // other libraries
      'rxjs':                      'npm:rxjs',
      'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js',
      'downloadjs': 'npm:downloadjs/download.js'

所以 npm start. 运行得很好

但正如指南所述,在创建 1st.spec.ts 后:

describe('1st tests', () => {
  it('true is true', () => expect(true).toBe(true));
});

这会引发我粘贴在顶部的错误。感谢您的宝贵时间!

【问题讨论】:

  • 如果您使用 npm 手动安装,您是否尝试过全局安装库:npm install -g downloadjs
  • 试过了,同样的错误。

标签: javascript node.js unit-testing angular typescript


【解决方案1】:

问题与 defs.spec.ts 位置有关。我们决定使用现有的 Angular 2 模板,在与它集成后,测试现在可以工作了。

【讨论】:

  • 您能告诉我“angular 2 模板”是什么意思吗?请您添加工作代码,以便希望在 Angular 2 应用程序中使用 downloadjs 的人有所帮助。
  • 我们将整个项目转移到一个新的框架中,称为Azimuth template。现在,我使用Angular CLI创建项目,从那以后就没有出现过这个问题(我们现在使用Angular 5)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-16
  • 1970-01-01
  • 2015-06-20
  • 1970-01-01
  • 2019-01-08
  • 2017-10-30
相关资源
最近更新 更多