首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TS1343:只有当“-模块”选项为“is 2020”、“esnext”或“system”时,才允许使用“import.meta”元属性。

TS1343:只有当“-模块”选项为“is 2020”、“esnext”或“system”时,才允许使用“import.meta”元属性。
EN

Stack Overflow用户
提问于 2021-12-21 19:12:03
回答 4查看 12.2K关注 0票数 21

Jest.js在代码中遇到import.meta时,我得到一个错误:

代码语言:javascript
运行
复制
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相关的软件包:

代码语言:javascript
运行
复制
// 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

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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' ),
        } ),
    ],
} )

尝试过

  • module在tsconfig.json中设置为es2020esnextsystem

所有这些都没有清除或更改终端错误。

上面是否有错误的配置,妨碍Jest正确运行babel?

EN

Stack Overflow用户

发布于 2022-03-29 19:24:29

  1. 安装vite-插件-环境插件(https://www.npmjs.com/package/vite-plugin-environment)
  2. 在靠近.env的项目根文件夹中创建package.json文件
  3. .env文件中提供env变量
  4. 将所有import.meta.env.YOUR_VAR更改为process.env.YOUR_VAR
  5. 打开vite.config.ts并列出vite-plugin-环境:
代码语言:javascript
运行
复制
import EnvironmentPlugin from 'vite-plugin-environment';

...

plugins: [
  react(), 
  ...
  EnvironmentPlugin('all')
]

Jest会理解process.env.YOUR_VAR,所以如果您将所有的import.meta.env.YOUR_VAR更改为process.env.YOUR_VAR,您的测试就会通过,而不会出现import.meta.env错误。

这篇文章帮助我在Vite项目中建立了Jest。

票数 6
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70440505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档