参考文章:vue项目获取本机局域网IP地址(vue.config.js版本)
在Vite中,没有vue.config.js文件,而是使用vite.config.js(或vite.config.ts,如果项目使用TypeScript)来配置项目;
1.获取 IP 需要借助 os
模块,需要先安装依赖:
npm install os
2.其次在vite.config.ts中引用模块
import os from 'os';
3.接着,添加一个获取本机内网IP的函数
function getNetworkIp() {
let needHost = '';
try {
const network = os.networkInterfaces();
for (const dev in network) {
const iface = network[dev];
if (iface) { // 添加这个条件检查,确保iface有被定义
for (let i = 0; i < iface.length; i++) {
const alias = iface[i];
if (
alias.family === 'IPv4' &&
alias.address !== '127.0.0.1' &&
!alias.internal
) {
needHost = alias.address;
}
}
}
}
} catch (e) {
needHost = 'localhost';
}
return needHost;
}
4.在导出配置对象中添加设置环境变量的代码
import { defineConfig } from 'vite';
// ...
export default defineConfig({
// ...
build: {
// ...
},
server: {
// ...
},
plugins: [
// ...
],
// 设置环境变量(重点)
// 注意:define 中的键名应该是 'import.meta.env.BASE_IP',这是 Vite 中用于定义环境变量的方式。
define: {
'import.meta.env.BASE_IP': JSON.stringify(`http://${getNetworkIp()}:${process.env.PORT || 3000}`),
},
});
-
注意:
-
1.define
中的键名应该是'import.meta.env.BASE_IP'
,这是 Vite 中用于定义环境变量的方式。 - 2.替换
http://${getNetWorkIp}
为你实际想要设置的基础IP地址,确保这是一个字符串。 - 3.确保端口号
process.env.PORT || 3000
配置正确,可以根据你的需求进行更改。
接着保存vite.config.ts
文件。并且重新启动你的 Vite 项目。确保在重新启动后,新的配置生效。
现在,import.meta.env.BASE_IP
能够在项目中被正确访问,包含你在 vite.config.ts
中设置的值。
5.在vue界面中调用BASE_IP的值
const baseIP = import.meta.env.BASE_IP;
console.log(baseIP); // 输出BASE_IP的值
这将允许你在你的代码中获取到BASE_IP
环境变量的值并进行使用,比如用于构建API请求的URL等。
遇到的部分小问题:
在 Vite 项目中,import.meta.env
是在构建时由 Vite 注入的环境变量,而不是在运行时从网络获取的。因此,在代码中调用 const baseIP = import.meta.env.BASE_IP;
不需要网络连接
如果 import.meta.env.BASE_IP
返回 undefined
,那么有可能是配置环境变量的步骤有问题或者配置没有生效。请确保已经按照之前的步骤正确配置了 vite.config.ts
中的 define
选项来设置 BASE_IP
。
如果配置没有问题,可以尝试以下几个步骤来排除问题:
-
确保你的 Vite 项目已经重新启动,以确保配置的变更已经生效。
-
如果你在设置环境变量时使用了特定的 Vite 插件或者工具,确保这些工具也是最新的版本,并且没有与其他插件发生冲突。
-
在
vite.config.ts
中检查define
配置的拼写和语法错误。确保BASE_IP
已经被正确设置为字符串。 -
如果你使用的是开发服务器,确保你的环境变量是在服务器启动前设置的。有时,如果你在服务器已经启动后设置环境变量,它们可能不会立即生效。
-
检查是否有其他全局或局部的环境变量配置影响了
BASE_IP
的值。文章来源:https://www.toymoban.com/news/detail-754015.html -
如果你使用了任何代码拆分或动态导入,确保
BASE_IP
的访问方式没有被异步操作阻碍,以致于导致undefined
。文章来源地址https://www.toymoban.com/news/detail-754015.html
到了这里,关于配置Vite获取内网IP(Vue3项目ts版本获取本机局域网IP地址)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!