#typescript #webpack #karma-runner
#typescript #webpack #карма-бегун
Вопрос:
Я запускаю начальный проект, в котором работают Jasmine и Karma. Все настроено правильно.
Webpack запускает приложение «npm start», но когда я запускаю «npm test», Webpack просматривает файл .ts, который затем загружает файлы .spec.ts. Я получаю сообщение об ошибке при запуске этого кода из начального проекта
bundle is now VALID.
[32m06 10 2016 10:16:42.660:INFO [karma]:
[39mKarma v0.13.22 server started at http://localhost:9876/
[32m06 10 2016 10:16:42.664:INFO [launcher]:
[39mStarting browser PhantomJS
[32m06 10 2016 10:16:44.259:INFO [PhantomJS 2.1.1 (Windows 7 0.0.0)]:
[39mConnected on socket /#YRouUOeCLSlLTu_KAAAA with id 23215732
PhantomJS 2.1.1 (Windows 7 0.0.0)
ERROR
SyntaxError: Unexpected token '<'
at C:/Development/ScratchApp/ScratchApp/src/test.ts:4
PhantomJS 2.1.1 (Windows 7 0.0.0)
Ошибка — это неожиданный токен ‘<‘ в следующем файле test.ts
// this file is only being used by karma
require('phantomjs-polyfill')
requireAll((<any>require).context("./", true, /spec.ts$/));
function requireAll(r: any): any {
r.keys().forEach(r);
}
Может ли кто-нибудь увидеть эту синтаксическую ошибку?
Комментарии:
1. Похоже, вы пытаетесь запустить код typescript. Вы должны сначала скомпилировать код typescript в код javascript, а затем запустить его.
2. Да, вы правы. Проблема была более сложной, чем я опубликовал здесь, из-за того, что система управления версиями теряла файлы сопоставления (и определения). WebPack по какой-то странной причине просматривал неправильный источник на сервере сборки
Ответ №1:
Важная часть этого вопроса заключается в следующем:
at C:/Development/ScratchApp/ScratchApp/src/test.ts:4
Вот почему вы получаете неожиданный токен ‘<‘, потому что ваш файл TypeScript имеет <any>
начало строки requireAll
. JavaScript не ожидает найти аннотации типов, поэтому все они удаляются во время компиляции.
Обновите код среды выполнения, чтобы использовать скомпилированный файл:
C:/Development/ScratchApp/ScratchApp/src/test.js