Typescript 使用wallaby进行测试时出现意外的保留字错误
在我编写测试用例的测试文件中,我导入了一个typescript文件,如下所示: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
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。你永远是我的救星:)