gpt4 book ai didi

javascript - 引用错误 : Can't find variable: Map

转载 作者:太空狗 更新时间:2023-10-29 17:35:47 25 4
gpt4 key购买 nike

我正在使用 Angular 4、Webpack 2.4.1、Karma 1.6 和 Jasmine 2.6.1,并且正在编写 ES2015 不是 TypeScript

我有一个小 Angular 演示应用程序,我想添加单元测试。演示应用程序本身正在运行,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';import 'core-js/es6'; 阅读其他答案后, 但这没有帮助。

我已经查看了 Testing -ts - GUIDE我似乎没有遗漏早期基本示例中的任何重要内容,但问题是所有官方文档都针对 TypeScript,而我想使用 ES2015。

我了解到 Map 是 ES2015 中的一种新对象类型,而不是错误指示的变量。 Babel 不应该支持这个吗?

有人能帮忙吗?

最佳答案

抛出这个错误是因为浏览器中没有Map。 PhantomJS 用作 Karma 驱动,不支持 ES6 特性。

如果 polyfill(例如 core-js)未加载到测试中包含的文件中,则应单独加载它们,例如通过 karma-es6-shim插件:

    ...
frameworks: ['es6-shim', 'jasmine'],
...

关于javascript - 引用错误 : Can't find variable: Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43803151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com