Typescript 使用wallaby进行测试时出现意外的保留字错误

Typescript 使用wallaby进行测试时出现意外的保留字错误,typescript,wallaby.js,Typescript,Wallaby.js,在我编写测试用例的测试文件中,我导入了一个typescript文件,如下所示: import {rootReducer} from "../src/reducers/rootReducer"; import taskReducer from "./taskReducer.ts"; 在rootReducer.ts中,我导入了另一个typescript文件,如下所示: import {rootReducer} from "../src/reducers/rootReducer"; import

在我编写测试用例的测试文件中,我导入了一个typescript文件,如下所示:

import {rootReducer} from "../src/reducers/rootReducer";
import taskReducer from "./taskReducer.ts";
在rootReducer.ts中,我导入了另一个typescript文件,如下所示:

import {rootReducer} from "../src/reducers/rootReducer";
import taskReducer from "./taskReducer.ts";
然后显示错误:

SyntaxError: Unexpected reserved word
at src/reducers/rootReducer.ts:7
rootReducer.ts和taskReducer.ts都位于/src/reducers文件夹下

若从导入语句中删除“.ts”,但在浏览器中引发错误,则测试不会失败。该应用程序将不会运行

wallaby的配置如下所示:

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
            })
        }
    }
};
你的声明:

import taskReducer from "./taskReducer.ts";
应为:

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


问题不在wallaby.js中,而是在您的Web包配置中。若要在不指定扩展名的情况下启用所需文件,必须添加resolve.extensions参数,指定Web包搜索的文件:

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

你确定这不是因为在第二次导入中缺少{}吗?看起来像是语法错误。我曾尝试在第二次导入中添加{}。仍然显示相同的错误。我想这是我在wallaby配置中遗漏的东西,因为当我删除扩展名“.ts”时,就没有wallaby错误了。您需要从导入中删除
.ts
,否则您只是将TypeScript文件作为JavaScript加载,因此会出现错误。如果我从导入中删除.ts,浏览器将读取其js文件而不是ts文件,这会导致一些问题,并且应用程序无法在浏览器中工作。有什么方法可以让它在wallaby和浏览器中都工作吗?我不确定为什么需要在浏览器中加载ts而不是js,您的构建过程/模块绑定器应该负责为您的浏览器正确编译内容。无论如何,请创建一个示例存储库来演示您的问题,很乐意研究它并提供帮助。尝试了这两种方法。仍然显示相同的错误。如果我删除扩展名“.ts”,wallaby不会显示任何错误。但浏览器会抛出错误,而应用程序不会work@DixyXavier您不应该需要.ts文件。。模块加载程序应在运行时加载.js文件:-/如果我从导入中删除.ts,浏览器将读取其js文件而不是ts,这会导致一些问题,并且应用程序在浏览器中无法工作。有什么方法可以让它在wallaby和浏览器中都工作吗?谢谢你,Artem。你永远是我的救星:)