javascript – ReferenceError:找不到变量:Map
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – ReferenceError:找不到变量:Map,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2616字,纯文字阅读大概需要4分钟。
内容图文
![javascript – ReferenceError:找不到变量:Map](/upload/InfoBanner/zyjiaocheng/781/b95799bab70c435fbf3e04eaef443e92.jpg)
我正在使用Angular 4,Webpack 2.4.1,Karma 1.6和Jasmine 2.6.1,我正在编写ES2015而不是TypeScript
我有一个小角度演示应用程序,我想添加单元测试.演示应用程序本身正在运行,Webpack正在捆绑所有内容,但是当我尝试运行单元测试时,我在控制台中看到一些错误,如下所示:
ReferenceError: Can’t find variable: Map
at Static/js/app.welcome.js:2569
(app.welcome.js是我的组件的名称)
Webpack似乎正在构建我的测试包,Karma服务器正常启动并且PhantomJS正确启动,但后来我看到了几个Map错误.
我绝对不会在自己的代码中使用Map()构造函数.
这是我的文件 –
app.welcome.js:
import {Component} from '@angular/core';
class WelcomeComponent {
constructor () {
this.welcomeMessage = 'Welcome to Angular 4';
}
}
WelcomeComponent.annotations = [
new Component({
selector: 'my-app',
template: '<h1>{{welcomeMessage}}</h1>'
})
];
export {WelcomeComponent};
app.welcome.spec.js:
import {TestBed} from '@angular/core/testing';
import {WelcomeComponent} from '../../js/app.welcome';
describe('The Welcome component', function () {
let component;
beforeEach(function() {
TestBed.configureTestingModule({
declarations: [WelcomeComponent]
});
const fixture = TestBed.createComponent(WelcomeComponent);
component = fixture.componentInstance;
});
it('should be a component', function() {
expect(component).toBeDefined();
});
it('should have a welcome message', function () {
expect(component.welcomeMessage).toEqual('Welcome to Angular 4');
});
});
karma.conf.js:
const webpack = require('webpack');
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
files: [
'./Static/js/**/*.js',
'./Static/test/**/*.spec.js'
],
exclude: [
'./Static/js/main.js'
],
preprocessors: {
'./Static/js/**/*.js': ['webpack'],
'./Static/test/**/*.spec.js': ['webpack']
},
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: false,
browsers: ['PhantomJS'],
singleRun: true,
concurrency: Infinity,
webpack: {
module: {
rules: [{
test: /\.js$/,
use: [{
loader: 'babel-loader',
options: { presets: ['es2015'] }
}]
}]
},
plugins: [
new webpack.ContextReplacementPlugin(/angular(\\|\/)core(\\|\/)@angular/, './src')
]
}
})
}
我已经尝试将导入添加到我的测试文件中,例如import’zone.js’;并导入’core-js / es6′;在这里阅读其他答案后,但这没有帮助.
我看过Testing -ts – GUIDE并且我似乎没有遗漏任何早期基本示例中的任何内容,但问题是所有官方文档都面向TypeScript,而我想使用ES2015.
我知道Map是ES2015中的一种新类型的对象,而不是错误所指示的变量. Babel不应该支持这个吗?
有人可以帮忙吗?
解决方法:
抛出此错误是因为浏览器中没有Map. PhantomJS用作Karma驱动程序,它不支持ES6功能.
如果polyfills(例如core-js)未加载到测试中包含的文件中,则应单独加载它们,例如通过karma-es6-shim插件:
...
frameworks: ['es6-shim', 'jasmine'],
...
内容总结
以上是互联网集市为您收集整理的javascript – ReferenceError:找不到变量:Map全部内容,希望文章能够帮你解决javascript – ReferenceError:找不到变量:Map所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。