首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在生产中未定义的Import.meta.env构建vitejs

在生产中未定义的Import.meta.env构建vitejs
EN

Stack Overflow用户
提问于 2021-05-04 02:40:55
回答 2查看 11.7K关注 0票数 10

我正在使用vitejs静态地编译我的react,但是在构建.env导入变得没有定义之后,这在开发阶段就不是这样了。

阅读文档后,我发现这些变量被相应的值替换,但是在查看dev工具中的源代码/编译代码后,它显示了一个带有env名称/键的空对象。

我可能在vite.config.ts中有一个错误的配置,所以它在这里。

代码语言:javascript
复制
//vite.config.ts
import { defineConfig, loadEnv } from 'vite';
import reactRefresh from '@vitejs/plugin-react-refresh';
import { getAliases } from 'vite-aliases';

const aliases = getAliases({
  path: 'src',
  prefix: '@',
});

export default ({ mode }) => {
  process.env = { ...process.env, ...loadEnv(mode, process.cwd()) };

  // import.meta.env.VITE_NAME available here with: process.env.VITE_NAME
  // import.meta.env.VITE_PORT available here with: process.env.VITE_PORT

  const plugins = mode === 'development' ? [reactRefresh()] : [];
  return defineConfig({
    plugins,
    publicDir: 'src/assets',
    resolve: {
      alias: aliases,
    },
    build: {
      chunkSizeWarningLimit: 1500,
    },
  });
};

还有我引用这些env var的代码

代码语言:javascript
复制
//config.ts
export const config = () => {
  const url = import.meta.env.VITE_SERVER_URL;
  const api = import.meta.env.VITE_API_ENDPOINT;
  const auth = import.meta.env.VITE_AUTH_ENDPOINT;

  const isProd = import.meta.env.MODE === 'production';
  const isDev = import.meta.env.MODE === 'development';

  console.log(url, api, auth);
  return {
    api: (endpoint: string) => `${url}${api}${endpoint}`,
    auth: (endpoint: string) => `${url}${auth}${endpoint}`,
    test: (endpoint: string) => `${url}test${endpoint}`,
    isProd,
    isDev,
  };
};
EN

回答 2

Stack Overflow用户

发布于 2022-04-22 03:58:02

我刚刚意识到了ViteJS文档的意思,如果有人也有这种情况的话,我就不写了。

票数 9
EN

Stack Overflow用户

发布于 2022-07-14 10:15:42

您不必使用VITE_。只要在vite配置上的envPrefix选项中定义前缀,就可以使用任何前缀。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67378099

复制
相关文章

相似问题

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