2015-05-06 5 views
3

Я пытался получить некоторые тесты в Phantom going, но Aurelia/SystemJS, похоже, разбивается на Phantom.SystemJS/Aurelia app breaks in PhantomJS

Я протестировал его с помощью своего приложения и примера контактов с Aurelia, они немного по-разному. Я перечислю здесь выходы, которые я захватил:

приложение-контакты:

CONSOLE: INFO [aurelia] Aurelia Starting (from line #undefined in "undefined") 
CONSOLE: DEBUG [aurelia] Loading plugin github:aurelia/[email protected] (from line #undefined in "undefined") 
TypeError: Attempting to define property on object that is not extensible. 

    http://localhost:9001/:48 in defineProperty 
    http://localhost:9001/:36 
    http://localhost:9001/:29 in fastKey 
    http://localhost:9001/:115 
    http://localhost:9001/:10 in set 
    http://localhost:9001/:51 in set 
    http://localhost:9001/:14 in ensureOriginOnExports 
    http://localhost:9001/:131 
    http://localhost:9001/jspm_packages/es6-module-loader.js:7 in O 
    http://localhost:9001/jspm_packages/es6-module-loader.js:7 in K 
    http://localhost:9001/jspm_packages/es6-module-loader.js:7 
    http://localhost:9001/jspm_packages/es6-module-loader.js:7 
    http://localhost:9001/jspm_packages/es6-module-loader.js:7 
    http://localhost:9001/jspm_packages/es6-module-loader.js:7 

мое приложение:

CONSOLE: Potentially unhandled rejection [2] ReferenceError: Can't find variable: Map 
    at http://127.0.0.1:8380/web-admin/:22 
    at p (http://127.0.0.1:8380/web-admin/jspm_packages/system.js:1) 
    at p (http://127.0.0.1:8380/web-admin/jspm_packages/system.js:1) 
    at p (http://127.0.0.1:8380/web-admin/jspm_packages/system.js:1) 
    at p (http://127.0.0.1:8380/web-admin/jspm_packages/system.js:1) 
    at p (http://127.0.0.1:8380/web-admin/jspm_packages/system.js:1) 
    at p (http://127.0.0.1:8380/web-admin/jspm_packages/system.js:1) 
    at p (http://127.0.0.1:8380/web-admin/jspm_packages/system.js:1) 
    at http://127.0.0.1:8380/web-admin/jspm_packages/system.js:1 
    at o (http://127.0.0.1:8380/web-admin/jspm_packages/es6-module-loader.js:7) 
    at p (http://127.0.0.1:8380/web-admin/jspm_packages/es6-module-loader.js:7) 
    at j (http://127.0.0.1:8380/web-admin/jspm_packages/es6-module-loader.js:7) 
    at k (http://127.0.0.1:8380/web-admin/jspm_packages/es6-module-loader.js:7) 
    at http://127.0.0.1:8380/web-admin/jspm_packages/es6-module-loader.js:7 
    at O (http://127.0.0.1:8380/web-admin/jspm_packages/es6-module-loader.js:7) 
    at K (http://127.0.0.1:8380/web-admin/jspm_packages/es6-module-loader.js:7) 
    at http://127.0.0.1:8380/web-admin/jspm_packages/es6-module-loader.js:7 
    at http://127.0.0.1:8380/web-admin/jspm_packages/es6-module-loader.js:7 
    at http://127.0.0.1:8380/web-admin/jspm_packages/es6-module-loader.js:7 
    at http://127.0.0.1:8380/web-admin/jspm_packages/es6-module-loader.js:7 (from line #undefined in "undefined") 

FWIW эти оба работают отлично в Chrome/FF и I» м погонных PhantomJS 1.9.8 на OS X 10,10

Также здесь сценарий фантом я использую, чтобы проверить это и выход из консоли:

var webPage = require('webpage'); 
var page = webPage.create(); 

page.open('http://localhost:9001/', function() { 
    page.onConsoleMessage = function(msg, lineNum, sourceId) { 
    console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")'); 
    }; 
}); 

запустить приложение контактов (первый пример), выполните следующие действия:

git clone [email protected]:aurelia/app-contacts.git 
cd app-contacts 
npm install && jspm install 
gulp watch 

Это предполагает, что вы node, jspm и gulp установлен. Затем вы можете запустить вышеупомянутый скрипт phantomjs.

Любые идеи?

+0

Пожалуйста, зарегистрируйтесь на события 'onConsoleMessage',' onError', 'onResourceError',' onResourceTimeout' ([Пример] (https://gist.github.com/artjomb/4cf43d16ce50d8674fdf)). Возможно, есть ошибки. –

+0

Вы попробовали версию ниже 1.9 Phantom js? У меня были проблемы с osx с некоторыми версиями 1.9 Phantom. – sam

ответ

2

Map - довольно новая структура. Используйте npm install harmony-collections --save-dev и добавьте "node_modules/harmony-collections/harmony-collections.min.js", в конфигурацию кармы.

+0

Подтвержденный подход работает, хотя я пошел с прокладкой 'es6-collections', поскольку он выглядит более ухоженным. –

+0

Что значит «добавить» ... js «в конфигурацию кармы»? Я мало знаю о Карме. Я использую файл karma.config.js, созданный генератором Yeoman, но нет списка файлов для включения или чего-то еще. Можете ли вы дать мне несколько подробностей, пожалуйста? –

+1

в файле karma.conf добавьте его в 'files array' следующим образом: "files: [ './node_modules/harmony-collections/harmony-collections.min.js' ]" –