标签: vite

如何使用Vite从.env文件加载环境变量

我想.env使用Vite从文件中加载环境变量

我使用了文档import.meta.env中提到的对象

.env文件:

TEST_VAR=123F
Run Code Online (Sandbox Code Playgroud)

import.meta.env当尝试通过->访问此变量时,import.meta.env.TEST_VAR它返回未定义。

那么,我怎样才能访问它们呢?

javascript environment-variables env-file vite

136
推荐指数
4
解决办法
23万
查看次数

“vite”和“vite预览”有什么区别?

我使用 vite 创建了一个项目模板。

在package.json下,我看到了这个;

  "scripts": {
    "dev": "vite",
    "build": "vue-tsc --noEmit && vite build",
    "preview": "vite preview"
  },
Run Code Online (Sandbox Code Playgroud)

vite和 和有什么区别vite preview?什么时候应该使用vite来代替vite preview

javascript vue.js vite

107
推荐指数
2
解决办法
4万
查看次数

在本地主机上访问 https

我正在尝试让 https 在我的 Vite 本地主机环境中工作。Chrome 显示无效证书错误。

我已经像这样设置了 vite.config.js 文件:

import { defineConfig  } from 'vite'
import vue from '@vitejs/plugin-vue'
import fs from 'fs';

export default defineConfig({
  resolve: { alias: { '@': '/src' } },
  plugins: [vue()],
  https: {
    key: fs.readFileSync('RootCA-key.pem'),
    cert: fs.readFileSync('RootCA.pem')
  }
})
Run Code Online (Sandbox Code Playgroud)

当我运行它时npm run dev -- --https,它按预期工作,我没有从 Vite 收到任何问题。但是,Chrome 显示无效证书。

我使用 openssl 创建证书文件,这给了我 .crt、.pem 和 .key 文件。它们都不是二进制的,因此我将 .key 文件重命名为 RootCA-key.pem。我尝试使用 RootCA.pem 文件作为证书,并将 RootCA.crt 文件重命名为 RootCA-cert.pem 并将其用作证书。

作为临时解决方法,我在 Chrome 中启用了不安全的本地主机 (chrome://flags/#allow-insecure-localhost),这至少消除了警告。

ssl https vite

104
推荐指数
4
解决办法
12万
查看次数

为什么 Vite 会创建两个 TypeScript 配置文件:tsconfig.json 和 tsconfig.node.json?

我正在使用 Vite 创建一个新的 React + TypeScript 项目

创建项目后,根文件夹中有两个 TypeScript 配置文件:tsconfig.jsontsconfig.node.json. 以下是每一篇的内容:

tsconfig.json

{
    "compilerOptions": {
        "target": "ESNext",
        "useDefineForClassFields": true,
        "lib": ["DOM", "DOM.Iterable", "ESNext"],
        "allowJs": false,
        "skipLibCheck": false,
        "esModuleInterop": false,
        "allowSyntheticDefaultImports": true,
        "strict": true,
        "forceConsistentCasingInFileNames": true,
        "module": "ESNext",
        "moduleResolution": "Node",
        "resolveJsonModule": true,
        "isolatedModules": true,
        "noEmit": true,
        "jsx": "react-jsx"
    },
    "include": ["src"],
    "references": [{ "path": "./tsconfig.node.json" }]
}
Run Code Online (Sandbox Code Playgroud)

tsconfig.node.json

{
    "compilerOptions": {
        "composite": true,
        "module": "esnext",
        "moduleResolution": "node"
    },
    "include": ["vite.config.ts"]
}
Run Code Online (Sandbox Code Playgroud)

为什么我们需要两个?

第二个是做什么的?

我可以删除第二个吗?

javascript typescript tsconfig vite

101
推荐指数
2
解决办法
4万
查看次数

绝对路径在 Vite 项目 React TS 中不起作用

我正在努力寻找在Vite React-ts项目中工作的绝对路径。

\n

这是我创建项目的方式

\n
npm init @vitejs/app\nnpx: installed 6 in 1.883s\n\xe2\x88\x9a Project name: ... test-vite\n\xe2\x88\x9a Select a framework: \xc2\xbb react\n\xe2\x88\x9a Select a variant: \xc2\xbb react-ts\n
Run Code Online (Sandbox Code Playgroud)\n

然后我根据TS 官方文档将baseUrl添加到tsconfig.json \n :

\n
{\n  "compilerOptions": {\n    "baseUrl": "./src",\n    ...\n
Run Code Online (Sandbox Code Playgroud)\n

然后添加一个简单的组件(T:\\test-vite\\src\\components\\Test.tsx)

\n
import React from "react";\n\nconst Test = () => <h1>This is a Test.</h1>;\n\nexport default Test;\n
Run Code Online (Sandbox Code Playgroud)\n

最后,我在App.tsx中导入Test组件,但它不允许我使用绝对路径:

\n
import Test from "components/Test";\n
Run Code Online (Sandbox Code Playgroud)\n

我收到此错误\n在此输入图像描述

\n

而如果我使用相对路径,应用程序可以在开发构建模式下运行,不会出现任何错误:

\n …

typescript reactjs vite

92
推荐指数
5
解决办法
9万
查看次数

“npm run dev”上的“vite 无法识别...”

我是第一次使用 Node.js 和 npm,我正在尝试按照教程和文档让 Vite 工作。但每次我都会遇到这样的问题:

“vite”不被识别为内部或外部命令、可操作程序或批处理文件。

我无法找到解决方案。

我尝试重新启动电脑,重新安装node.js和几个创建vite项目的过程,但没有成功。

当我尝试创建 vite 项目时运行的命令和响应
npm create vite@latest
: >> my-portfolio >> vanilla & vanilla
cd my-portfolio
npm install >>resp:最新,在 21 秒内审计了 1 个包,发现 0 个漏洞 npm run dev
resp:

> my-portfolio@0.0.0 dev
> vite

'vite' is not recognized as an internal or external command,
operable program or batch file.
Run Code Online (Sandbox Code Playgroud)

node.js npm vite

92
推荐指数
5
解决办法
23万
查看次数

Vitest DefineConfig,“UserConfigExport”类型中不存在“test”

尝试在现有的 vite(vue 3,typescript)项目上设置 vitest。

我的 vite.config.ts 看起来像这样:

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';

export default defineConfig({
  test: {
    globals: true,
    environment: 'jsdom',
  },
  plugins: [vue()],
});
Run Code Online (Sandbox Code Playgroud)

但在 VS 代码中它会抱怨:

vscode 测试 prop 下的红线

悬停时我看到:

类型参数 '{ test: { globals: boolean; 环境:字符串;}; 插件:插件[];}' 不可分配给“UserConfigExport”类型的参数。对象文字只能指定已知属性,并且“UserConfigExport”类型中不存在“test”。ts(2345)

如果我改变这一行,我可以让它消失:

import { defineConfig } from 'vite';
Run Code Online (Sandbox Code Playgroud)

到:

import { defineConfig } from 'vitest/config';
Run Code Online (Sandbox Code Playgroud)

但为什么?这是怎么回事?为什么我必须从 vitest 导入 DefineConfig 才能使其支持测试属性?

typescript vite vitest

91
推荐指数
5
解决办法
4万
查看次数

Vue/Vite 原生设置中出现“TypeError:无法获取动态导入的模块”

我们有一个普通的 Vue/Vite 设置,我正在接收TypeError: Failed to fetch dynamically imported module哨兵日志。

尽管我没有足够的数据来确认,但这些错误似乎与新的产品部署及时相关。它不会发生在本地,仅出现在已部署的代码上。
我见过一些关于 React 设置的类似问题,但没有一个得到满意的答复。
我还发现了有关动态导入 svgs 的类似问题,但我们的错误发生在完整组件上。

我们使用动态导入组件的唯一地方是路由:

export const router = createRouter({
  history: routerHistory,
  strict: true,
  routes: [
    {
      path: '/',
      name: routes.homepage.name,
      component: () => import('@/views/Home.vue'),
      children: [
        {
          path: '/overview',
          name: routes.overview.name,
          component: () => import('@/views/Overview.vue'),
        },
        // other similar routes
      ],
    },
  ],
});
Run Code Online (Sandbox Code Playgroud)

我们的部门版本:

    "vue": "^3.0.9",
    "vue-router": "^4.0.5",
    "vite": "^2.0.5",
Run Code Online (Sandbox Code Playgroud)

有关此问题以及如何调试它的任何其他信息将不胜感激!

javascript typescript webpack vue.js vite

76
推荐指数
5
解决办法
13万
查看次数

Vue 3 Vite-动态图片src

我正在使用 Vue 3 和 Vite。在 Vite 构建生产后,我遇到了动态 img src 的问题。对于静态 img src 没有问题。

<img src="/src/assets/images/my-image.png" alt="Image" class="logo"/>
Run Code Online (Sandbox Code Playgroud)

它在两种情况下都运行良好:在开发模式下运行时以及在 vite 构建之后。但我有一些图像名称存储在动态加载的数据库中(菜单图标)。在这种情况下,我必须像这样编写路径:

<img :src="'/src/assets/images/' + menuItem.iconSource" />
Run Code Online (Sandbox Code Playgroud)

(menuItem.iconSource 包含图像的名称,如“my-image.png”)。在这种情况下,它在开发模式下运行应用程序时有效,但在生产构建后无效。当 Vite 为生产构建应用程序时,路径会发生更改(所有资源都放入_assets文件夹中)。静态图片源是由Vite build处理的,路径也会相应改变,但合成图片源则不然。它只是/src/assets/images/作为一个常量,不会改变它(当应用程序抛出 404 not find for image /src/assets/images/my-image.png 时,我可以在网络监视器中看到它)。我试图找到解决方案,有人建议使用require(),但我不确定 vite 是否可以使用它。

vue.js vuejs3 vite

69
推荐指数
6
解决办法
9万
查看次数

如何在Vite中配置代理?

我试图遵循文档并创建vite.config.js如下:

const config = {
  outDir: '../wwwroot/',
  proxy: {
    // string shorthand
    '/foo': 'http://localhost:4567',
    // with options
    '/api': {
      target: 'http://jsonplaceholder.typicode.com',
      changeOrigin: true,
      rewrite: path => path.replace(/^\/api/, '')
    }
  }
};

export default config;
Run Code Online (Sandbox Code Playgroud)

并尝试通过以下调用对其进行测试:

fetch('/foo');
fetch('/api/test/get');
Run Code Online (Sandbox Code Playgroud)

我本来期望有实际的请求,http://localhost:4567/foohttp://jsonplaceholder.typicode.com/test/get 它们都以我的开发服务器作为源,如下所示:http://localhost:3000/foohttp://localhost:3000/api/test/get

难道是我理解错了?代理应该如何工作?

我还在 Vite 存储库中创建了一个问题,但它已关闭,而且我不明白结束评论。

http-proxy vuejs3 vite

60
推荐指数
3
解决办法
11万
查看次数