2016-01-28 2 views
7

В моем тестовом файле, где я писал тесты, я импортировал машинопись файл, как показано ниже:Неожиданной зарезервированной ошибки слова при тестировании с помощью валлаби

import {rootReducer} from "../src/reducers/rootReducer"; 

В rootReducer.ts я импортировал другой файл машинопись, как показано ниже :

import taskReducer from "./taskReducer.ts"; 

Затем он показывает ошибку:

SyntaxError: Unexpected reserved word 
at src/reducers/rootReducer.ts:7 

Оба rootRe ducer.ts и taskReducer.ts попадают под папку/src/reducers.

Нет неудачных тестов, если вы удалите '.ts' из инструкции import, но выдает ошибку в браузере. Приложение не будет работать, то

Конфигурация валлаби, как показано ниже:

module.exports = function (wallaby) { 

    return { 
     files: [ 
      'src/*.ts', 
      'src/**/*.ts' 
     ], 

     tests: [ 
      'test/*Test.ts' 
     ], 

     testFramework: "mocha", 

     env: { 
      type: 'node' 
     }, 

     compilers: { 
      '**/*.ts': wallaby.compilers.typeScript({ 
       /* 1 for CommonJs*/ 
       module: 1 
      }) 
     } 
    } 
}; 
+0

ты уверена, что это не потому, что вам не хватает {} в 2 импорта? он выглядит как синтаксическая ошибка. – toskv

+1

Я попытался добавить {} во 2-й импорт. по-прежнему показывает ту же ошибку. Я предполагаю, что это что-то я пропустил в конфигурации wallaby, потому что, когда я удаляю расширение «.ts», тогда нет ошибки wallaby. –

+0

Вам нужно удалить '.ts' из импорта, иначе вы просто загрузите свой файл TypeScript как JavaScript , следовательно, ошибка. –

ответ

2

Ваше утверждение:

import taskReducer from "./taskReducer.ts"; 

должны быть либо:

// Import just taskReducer from this module 
import {taskReducer} from "./taskReducer"; 

Или:

// Import the whole module and call it taskReducer 
import * as taskReducer from "./taskReducer"; 
+1

Пробовал оба этих. Показывает ту же ошибку. Если я удалю расширение '.ts', wallaby не будет показывать никаких ошибок. Но браузер бросает ошибку, и приложение не будет работать –

+0

@DixyXavier вам не нужен файл .ts. Загрузчик модуля должен загрузить файл .js во время выполнения. : -/ – toskv

+0

Если я удалю .ts из импорта, браузер прочитает его js-файл вместо ts, который вызовет некоторые проблемы, и приложение не будет работать в браузере. Есть ли способ, которым я могу заставить его работать как в Wallaby, так и в браузере? –

2

Проблема не в wallaby.js, а в конфигурации вашего webpack. Для включения требующих файлы без указания расширения, необходимо добавить параметр, указывающий, какие файлы resolve.extensions поиски WebPack для:

// webpack.config.js 
module.exports = { 
    ... 
    resolve: { 
    // you can now require('file') instead of require('file.ts') 
    extensions: ['', '.js', '.ts', '.tsx'] 
    } 
}; 
+0

Спасибо Артем. Ты всегда мой спаситель :) –

Смежные вопросы