2016-08-23 7 views
-1

Update: я все еще получаю такую ​​же проблему, как показано ниже, но теперь следующее сообщение об ошибке размещена на консоли, JSDom:ЗДЕСЬ Maps API для JavaScript тестирования Буг

Error: Uncaught [SyntaxError: ] 
    at reportException (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js:58:24) 
    at processJavaScript (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/jsdom/lib/jsdom/living/nodes/HTMLScriptElement-impl.js:130:7) 
    at HTMLScriptElementImpl._eval (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/jsdom/lib/jsdom/living/nodes/HTMLScriptElement-impl.js:65:7) 
    at e (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/jsdom/lib/jsdom/browser/resource-loader.js:30:22) 
    at Object.check (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/jsdom/lib/jsdom/living/nodes/Document-impl.js:97:11) 
    at /Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/jsdom/lib/jsdom/living/nodes/Document-impl.js:116:12 
    at wrappedEnqueued (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/jsdom/lib/jsdom/browser/resource-loader.js:234:16) 
    at Request.request [as _callback] (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/jsdom/lib/jsdom/browser/resource-loader.js:184:9) 
    at Request.self.callback (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/request/request.js:187:22) 
    at emitTwo (events.js:106:13) 
    at Request.emit (events.js:191:7) 
    at Request.<anonymous> (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/request/request.js:1044:10) 
    at emitOne (events.js:96:13) 
    at Request.emit (events.js:188:7) 
    at Gunzip.<anonymous> (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/request/request.js:965:12) 
    at emitNone (events.js:91:20) 
    at Gunzip.emit (events.js:185:7) 
    at endReadableNT (_stream_readable.js:934:12) 
    at _combinedTickCallback (internal/process/next_tick.js:74:11) 
    at process._tickCallback (internal/process/next_tick.js:98:9) SyntaxError 
    at XMLHttpRequest.open (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/jsdom/lib/jsdom/living/xmlhttprequest.js:451:15) 
    at http://js.api.here.com/v3/3.0/mapsjs-core.js:51:86 
    at http://js.api.here.com/v3/3.0/mapsjs-core.js:51:383 
    at http://js.api.here.com/v3/3.0/mapsjs-core.js:290:26 
    at Object.exports.runInContext (vm.js:44:17) 
    at processJavaScript (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/jsdom/lib/jsdom/living/nodes/HTMLScriptElement-impl.js:128:10) 
    at HTMLScriptElementImpl._eval (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/jsdom/lib/jsdom/living/nodes/HTMLScriptElement-impl.js:65:7) 
    at e (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/jsdom/lib/jsdom/browser/resource-loader.js:30:22) 
    at Object.check (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/jsdom/lib/jsdom/living/nodes/Document-impl.js:97:11) 
    at /Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/jsdom/lib/jsdom/living/nodes/Document-impl.js:116:12 
    at wrappedEnqueued (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/jsdom/lib/jsdom/browser/resource-loader.js:234:16) 
    at Request.request [as _callback] (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/jsdom/lib/jsdom/browser/resource-loader.js:184:9) 
    at Request.self.callback (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/request/request.js:187:22) 
    at emitTwo (events.js:106:13) 
    at Request.emit (events.js:191:7) 
    at Request.<anonymous> (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/request/request.js:1044:10) 
    at emitOne (events.js:96:13) 
    at Request.emit (events.js:188:7) 
    at Gunzip.<anonymous> (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/request/request.js:965:12) 
    at emitNone (events.js:91:20) 
    at Gunzip.emit (events.js:185:7) 
    at endReadableNT (_stream_readable.js:934:12) 
    at _combinedTickCallback (internal/process/next_tick.js:74:11) 
    at process._tickCallback (internal/process/next_tick.js:98:9) 

Я m пытается получить ЗДЕСЬ API JavaScript JavaScript для правильной работы в тесте, написанном с использованием Mocha.

it("should generate a map when the component gets rendered", function generateMapTest(done) { 
    this.timeout(0); 
    const scriptMap = getScriptMap(); 
    const scriptNames = Object.keys(scriptMap); 
    const finalScriptToLoad = last(scriptNames); 

    getScript(finalScriptToLoad).onLoad((err: any, res?: any) => { 
     global.H = window.H; 

     const platform = new H.service.Platform({ 
      app_id: 'app_id', 
      app_code: 'app_code', 
     }); 

     console.log(window.H); 
     done(err); 
    }); 
}); 

Для объяснения выше - переменная scriptMap используются для хранения объекта, содержащего URL-адрес каждого ЗДЕСЬ Карты сценария, который должен быть загружен. Каждый скрипт загружается последовательно с помощью JavaScript для добавления тегов в DOM (с использованием jsdom). Когда каждый скрипт загружается, каждый обратный вызов в массиве обратных вызовов вызывается, передавая обычные объекты ошибок и ответов. Обратные вызовы добавляются в этот массив, используя метод onLoad, показанный ниже.

Когда окончательный сценарий заканчивается загрузкой с серверов HERE, я привязываю объект H к глобальной переменной в Mocha и пытаюсь создать службу платформы. Это приводит к следующей ошибке:

Unhandled rejection TypeError: Cannot read property 'mapsjs-core' of undefined 
    at Hi (http://js.api.here.com/v3/3.0/mapsjs-core.js:287:626) 
    at Ji (http://js.api.here.com/v3/3.0/mapsjs-core.js:288:350) 
    at V.Es (eval at <anonymous> (http://js.api.here.com/v3/3.0/mapsjs-core.js:47:404), <anonymous>:13:188) 
    at new V (eval at <anonymous> (http://js.api.here.com/v3/3.0/mapsjs-core.js:47:404), <anonymous>:12:257) 
    at Object.getPlatform (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/src/utils/get-platform.js:9:16) 
    at /Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/src/HEREMap.js:34:50 
    at /Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/src/utils/cache.js:52:104 
    at arrayEach (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/lodash/lodash.js:522:11) 
    at Function.forEach (/Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/node_modules/lodash/lodash.js:9011:14) 
    at /Users/joshua/Dropbox/Projects/Web Development/NPM Modules/react-here-maps/src/utils/cache.js:52:30 

Я изо все силы, чтобы отладить Минимизированные версии коды при условии, так что, если я мог бы иметь некоторую помощь выследить источник этой ошибки я был бы признателен. Вероятно, стоит упомянуть, что все это в контексте построения ЗДЕСЬ компонента React React, исходный код можно найти здесь: https://github.com/josh-es/react-here-maps.

~^~

ответ

0

мне удалось изолировать проблему реализации JSDom в XMLHttpRequest API. Исправлена ​​проблема с заменой пакета «xmlhttprequest» npm. Установите его командой:

npm install --save-dev xmlhttprequest 

И затем исправить вышеуказанную проблему:

import { XMLHttpRequest } from "xmlhttprequest"; 

global.window.XMLHttpRequest = XMLHttpRequest; 
Смежные вопросы