在开始之前,这不是ReferenceError can't find variable: $
的重复我正在使用TypeScript
在Karma
中撰写测试。我的代码使用$
作为一个简单的事实,我们运行应用程序的应用程序使用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包含我的全局变量$
,但业力似乎并不喜欢它。
答案 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 }
],