Jam*_*ber 13 javascript reactjs jestjs create-react-app
我在jest:24.9.0没有任何配置的情况下使用,从 create-react-app 全局安装。在这些文件中,我使用了 es6 模块。使用时没有错误"test": "react-scripts test"
但是,当我开始使用jestwith 时,"test": "jest --config jest.config.js",我看到以下错误。
FAIL src/configuration/notifications.test.js
? Test suite failed to run
/var/www/management/node/src/configuration/notifications.test.js:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import notifications from './notifications';
^^^^^^
SyntaxError: Cannot use import statement outside a module
Run Code Online (Sandbox Code Playgroud)
pau*_*wen 20
正如上面的答案所描述的,Jest 不支持 ES6 模块。因此,我们需要将代码转换为支持的模块类型。我们可以使用babel-jest或ts-jest。ts-jest为了简单起见,我建议使用。
第一步:安装:
npm i -D ts-jest @types/jest或者yarn add --dev ts-jest @types/jest
第2步:配置
选项 1:创建 jest 配置文件jest.config.js
module.exports = {
transform: {
'^.+\\.(ts|tsx)$': 'ts-jest',
},
};
Run Code Online (Sandbox Code Playgroud)
选项 2:添加 jest 配置到package.json
"jest": {
"transform": {
"^.+\\.(ts|tsx)$": "ts-jest"
}
}
Run Code Online (Sandbox Code Playgroud)
第 3 步:执行脚本。现在一切都应该准备好了。
Jest 不支持ES6模块,因此当您直接使用 Jest 运行测试时会抛出此错误。如果你想这样运行,那么你必须添加 babel。
另一方面,当您使用react-scripts它运行测试时,会在幕后使用 babel 来转换代码。
在较新版本的 jest 中,babel-jest 现在由 Jest 自动加载并完全集成
希望这能回答你的问题。
开玩笑地添加 babel。
安装
babel-jest现在由 Jest 自动加载并完全集成。仅当您使用 babel-jest 转换 TypeScript 文件时才需要此步骤。
npm install --save-dev babel-jest
Run Code Online (Sandbox Code Playgroud)
用法
在您的 package.json 文件中进行以下更改:
{
"scripts": {
"test": "jest"
},
"jest": {
"transform": {
"^.+\\.[t|j]sx?$": "babel-jest"
}
}
}
Run Code Online (Sandbox Code Playgroud)
创建 .babelrc 配置文件
babel.config.json在您的项目根目录中创建一个配置并启用一些presets.
首先,您可以使用 env 预设,它为 ES2015+ 启用转换
npm install @babel/preset-env --save-dev
Run Code Online (Sandbox Code Playgroud)
为了启用预设,您必须在babel.config.json 文件中定义它,如下所示:
{
"presets": ["@babel/preset-env"]
}
Run Code Online (Sandbox Code Playgroud)
在Babel 官方网站上查看更多详细信息
| 归档时间: |
|
| 查看次数: |
4432 次 |
| 最近记录: |