2016-06-15 1 views
0

Я использую javascript-библиотеку javascript в моем проекте Angular2.Ошибка TypScript + Angular2 из-за зависимости JS-библиотеки

Я положил это в начале моего .ts и .spec.ts файлов:

declare var jsfeat: any; 

Я включил jsfeat.js в моей index.html.

Теперь я хочу, чтобы запустить тесты Angular2, но я получаю:

ReferenceError: jsfeat is not defined 

тест-код:

describe('MyObj instance', function() { 
    it('should instantiate MyObj',() => { 
    expect(new MyObj()).toBeDefined('Whoopie!'); 
    }); 
}); 
+0

Это звучит как ошибка времени выполнения, а не ошибка машинописного текста. –

+0

есть, есть. Я не могу сказать, что тестовый костюм для импорта jsfeat.js – Admdebian

+0

вам нужно добавить 'jsfeat' в karma.conf.js –

ответ

-1

Вы объявили, но вы не определили его, вы убежище 't присвоил ему значение.

+0

ok, что мне делать? Скопировать каждую подпись метода jsfeat в файл машинописного текста? – Admdebian

+0

думая об этом, ваш подход должен работать. Однако вы можете использовать systemJS для импорта сторонних библиотек. Предполагая, что вы используете systemJS для загрузки модуля, просто выполните ... import jsfeat как * from 'jsfeat' и сделайте запись jsfeat в файле конфигурации systemjs. что-то в этом роде. в записи конфигурации systemjs указано, что такое jsfeat и где его найти, а оператор import делает его доступным внутри модуля. ура – danday74

0

1) УСТАНОВИТЬ JSFEAT С НПМ (по желанию):

npm install -g jsfeat 

2) EDIT karma.conf.js:

config.set({ 

[...]

files: [ 
    // System.js for module loading 
    'node_modules/systemjs/dist/system.src.js', 

    // Polyfills 
    'node_modules/core-js/client/shim.js', 

    // Reflect and Zone.js 
    'node_modules/reflect-metadata/Reflect.js', 
    'node_modules/zone.js/dist/zone.js', 
    'node_modules/zone.js/dist/jasmine-patch.js', 
    'node_modules/zone.js/dist/async-test.js', 
    'node_modules/zone.js/dist/fake-async-test.js', 

[ ...]

Добавить jsfeat:

'node_modules/jsfeat/build/jsfeat.js',