当Jest.js
在代码中遇到import.meta
时,我得到一个错误:
FAIL testFile.test.ts
● Test suite failed to run
testFile.ts:40:10 - error TS1343: The 'import.meta' meta-property is only allowed when the '--module' option is 'es2020', 'esnext', or 'system'.
40 return import.meta?.env as EnvironmentalVariablesType
字符串
我已经安装了以下babel相关的软件包:
// package.json
"devDependencies": {
"@babel/core": "^7.16.5",
"@babel/preset-env": "^7.16.5",
"@babel/preset-typescript": "^7.16.5",
"@vitejs/plugin-react-refresh": "1.3.6",
"babel-jest": "^27.4.5",
"jest": "27.3.1",
"jest-environment-jsdom-global": "3.0.0",
"react": "17.0.1",
"ts-jest": "27.0.7",
"typescript": "4.1.3",
"vite": "2.6.14"
"dependencies": {
"babel-plugin-transform-vite-meta-env": "^1.0.3",
"babel-preset-vite": "^1.0.4",
型babel.config.js
如下:
module.exports = {
plugins: [ 'babel-plugin-transform-vite-meta-env' ],
presets: [
[
'@babel/preset-env',
{ targets: { node: 'current' } },
],
[ '@babel/preset-typescript' ],
[ 'babel-preset-vite' ],
],
}
型
我的vite.config.js
:
import { defineConfig } from 'vite'
import reactRefresh from '@vitejs/plugin-react-refresh'
import replace from '@rollup/plugin-replace'
// https://vitejs.dev/config/
export default defineConfig( {
base: '/time/',
server: {
port: 9000,
},
plugins: [
reactRefresh(),
replace( {
'process.env.NODE_ENV': JSON.stringify( 'development' ),
'process.env.SHOW_DEV_TOOLS': JSON.stringify( 'true' ),
} ),
],
} )
型
努力
- 将tslog.json中的
module
设置为es2020
、esnext
或system
这些都没有清除或改变终端错误。
上面是否有一些错误的配置阻止Jest正确运行babel?
5条答案
按热度按时间bwleehnv1#
在
tsconfig.json
中,尝试将compilerOptions
设置为:字符串
e5nqia272#
1.安装vite-plugin-environment插件(https://www.npmjs.com/package/vite-plugin-environment)
1.在package.json附近的项目根文件夹中创建
.env
文件1.在
.env
文件中提供环境变量1.将您所有
import.meta.env.YOUR_VAR
更改为process.env.YOUR_VAR
1.打开
vite.config.ts
并列出vite-plugin-environment:字符串
Jest将理解
process.env.YOUR_VAR
,因此如果您将所有import.meta.env.YOUR_VAR
更改为process.env.YOUR_VAR
,您的测试将通过,而不会出现import.meta.env
错误This article helped me for setting up Jest in my Vite project的函数。
slsn1g293#
我从
jest
切换到vitest
,这样就消除了这个错误。不需要更改测试代码。以下是我的
vitest.config.js
:字符串
l7wslrjt4#
您可以使用以下命令按照jest documentation沿着运行测试,并在ts配置文件中将allowSyntheticDefaultImports设置为“true”,这两个更改为我解决了错误。
字符串
或
型
确保你已经按照这个安装了相关的模块。This article,添加了正确的ts,jest和babel配置。(我已经为遇到这个错误的人分享了我的配置文件。This article非常方便了解初始设置要求。)
型
型
型
xienkqul5#
这个问题是从
.env
变量全局导入的。我有同样的问题,我从以下位置解决:字符串
收件人:
型