ReferenceError:无法找到变量:$(TypeScript - Karma)

时间:2017-12-12 08:27:57

标签: typescript karma-runner karma-jasmine

在开始之前,这不是ReferenceError can't find variable: $

的重复

我正在使用TypeScriptKarma中撰写测试。我的代码使用$作为一个简单的事实,我们运行应用程序的应用程序使用jQuery,但我们不是,所以我们只在globals.ts中声明变量而不是安装jQuery。文件:

declare var $: any

代码工作正常,没问题。但测试失败了:

  

ReferenceError:无法找到变量:$

在我的Karma.conf.js我已经引用了所有ts个文件,其中包括global.ts和全局变量$

// list of files / patterns to load in the browser
files: [
  'init-test-bed.spec.ts',
  'src/**/*.ts',
  // 'src/**/*.html',
  { pattern: 'node_modules/babel-polyfill/browser.js', instrument: false }
],

但它确实起作用。

这是es6的问题吗?或者我错过了什么?为什么我的代码有效,而我的测试没有?这肯定是业力配置的东西,但我找不到什么。

修改

我找到了一个解决方法,我不认为这是解决方案,因为我不想引用jQuery,我想要的是拥有一个全局范围的变量:

// list of files / patterns to load in the browser
files: [
  'init-test-bed.spec.ts',
  'src/**/*.ts',
  // 'src/**/*.html',
  { pattern: 'node_modules/babel-polyfill/browser.js', instrument: false },
  'https://code.jquery.com/jquery-1.11.2.min.js'
],

我引用了jQuery,我应该可以声明我的global.ts wchich包含我的全局变量$,但业力似乎并不喜欢它。

1 个答案:

答案 0 :(得分:0)

当您声明存在某些内容时:

declare var $: any

你告诉编译器“它不知道的东西将在运行时可用”。

每当您使用环境声明时,您还需要考虑如何满足声明。在您的情况下,可以通过在运行时包含jQuery来满足它。

jQuery必须先加载 依赖它的文件。模式的顺序决定了浏览器中文件的排序顺序......

files: [
  'https://code.jquery.com/jquery-1.11.2.min.js'
  'init-test-bed.spec.ts',
  'src/**/*.ts',
  // 'src/**/*.html',
  { pattern: 'node_modules/babel-polyfill/browser.js', instrument: false }
],