reactjs 我如何使用.env文件配置从Webpack到Vite?

lokaqttq  于 2023-01-30  发布在  React
关注(0)|答案(1)|浏览(183)

我最近开始将我的应用程序从Create React App迁移到Vite,但我很难理解如何将相同的.env文件设置复制到Vite。
在CRA中,我使用了CRACO和以下配置:

//craco.config.js

const path = require('path')
const webpack = require('webpack')

require('dotenv').config({
  path: path.resolve(__dirname, './.env.' + process.env.APP_ENV),
})

module.exports = {
  webpack: {
    plugins: [
      new webpack.DefinePlugin({
        DEV: process.env.APP_ENV === 'local',
        DOMAIN: JSON.stringify(process.env.API_URL),
      }),
      new webpack.ProvidePlugin({
        React: 'react',
        ReactDom: 'react-dom',
      }),
    ],
  },
}

我有不同环境的.env文件:.环境.本地,.环境.开发,.环境.阶段,.环境.生产
这些文件具有键值对,变量如API_URL=https://example.com
为了在我的.jSX文件中访问它们,我可以这样做:
console.log(DEV, DOMAIN)
我尝试使用下面的vite.config.js来复制与之前相同的设置:

// vite.config.js

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import EnvironmentPlugin from 'vite-plugin-environment'

export default defineConfig({
  plugins: [
    EnvironmentPlugin({
      DEV: process.env.APP_ENV === 'local',
      DOMAIN: process.env.API_URL,
    }),
    react()
  ],
})

但是当尝试运行vite时,我得到了以下错误:

error when starting dev server:
Error: vite-plugin-environment: the `DOMAIN` environment variable is undefined.
wtzytmuj

wtzytmuj1#

默认情况下,Vite不加载.env文件,因此您还应该从vite模块导入loadEnv

import { defineConfig, loadEnv } from 'vite'

然后加载.env文件:

export default defineConfig(({ command, mode }) => {
  const env = loadEnv(mode, process.cwd())
  ...
})

相关问题