我想.env
使用Vite从文件中加载环境变量
我使用了文档import.meta.env
中提到的对象
.env
文件:
TEST_VAR=123F
Run Code Online (Sandbox Code Playgroud)
import.meta.env
当尝试通过->访问此变量时,import.meta.env.TEST_VAR
它返回未定义。
那么,我怎样才能访问它们呢?
我使用 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
?
我正在尝试让 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),这至少消除了警告。
我正在使用 Vite 创建一个新的 React + TypeScript 项目。
创建项目后,根文件夹中有两个 TypeScript 配置文件:tsconfig.json
和tsconfig.node.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)
{
"compilerOptions": {
"composite": true,
"module": "esnext",
"moduleResolution": "node"
},
"include": ["vite.config.ts"]
}
Run Code Online (Sandbox Code Playgroud)
为什么我们需要两个?
第二个是做什么的?
我可以删除第二个吗?
我正在努力寻找在Vite React-ts项目中工作的绝对路径。
\n这是我创建项目的方式
\nnpm 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)
\nimport 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组件,但它不允许我使用绝对路径:
import Test from "components/Test";\n
Run Code Online (Sandbox Code Playgroud)\n\n而如果我使用相对路径,应用程序可以在开发和构建模式下运行,不会出现任何错误:
\n …我是第一次使用 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) 尝试在现有的 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 代码中它会抱怨:
悬停时我看到:
类型参数 '{ 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 才能使其支持测试属性?
我们有一个普通的 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)
有关此问题以及如何调试它的任何其他信息将不胜感激!
我正在使用 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 是否可以使用它。
我试图遵循文档并创建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/foo
但http://jsonplaceholder.typicode.com/test/get
它们都以我的开发服务器作为源,如下所示:http://localhost:3000/foo
和http://localhost:3000/api/test/get
难道是我理解错了?代理应该如何工作?
我还在 Vite 存储库中创建了一个问题,但它已关闭,而且我不明白结束评论。
vite ×10
javascript ×4
typescript ×4
vue.js ×3
vuejs3 ×2
env-file ×1
http-proxy ×1
https ×1
node.js ×1
npm ×1
reactjs ×1
ssl ×1
tsconfig ×1
vitest ×1
webpack ×1