• 配置Vite获取内网IP(Vue3项目​ts版本获取本机局域网IP地址)


    参考文章: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的函数
    1. function getNetworkIp() {
    2. let needHost = '';
    3. try {
    4. const network = os.networkInterfaces();
    5. for (const dev in network) {
    6. const iface = network[dev];
    7. if (iface) { // 添加这个条件检查,确保iface有被定义
    8. for (let i = 0; i < iface.length; i++) {
    9. const alias = iface[i];
    10. if (
    11. alias.family === 'IPv4' &&
    12. alias.address !== '127.0.0.1' &&
    13. !alias.internal
    14. ) {
    15. needHost = alias.address;
    16. }
    17. }
    18. }
    19. }
    20. } catch (e) {
    21. needHost = 'localhost';
    22. }
    23. return needHost;
    24. }
     4.在导出配置对象中添加设置环境变量的代码
    1. import { defineConfig } from 'vite';
    2. // ...
    3. export default defineConfig({
    4. // ...
    5. build: {
    6. // ...
    7. },
    8. server: {
    9. // ...
    10. },
    11. plugins: [
    12. // ...
    13. ],
    14. // 设置环境变量(重点)
    15. // 注意:define 中的键名应该是 'import.meta.env.BASE_IP',这是 Vite 中用于定义环境变量的方式。
    16. define: {
    17. 'import.meta.env.BASE_IP': JSON.stringify(`http://${getNetworkIp()}:${process.env.PORT || 3000}`),
    18. },
    19. });
    • 注意:
    • 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的值
    1. const baseIP = import.meta.env.BASE_IP;
    2. 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

    如果配置没有问题,可以尝试以下几个步骤来排除问题:

    1. 确保你的 Vite 项目已经重新启动,以确保配置的变更已经生效。

    2. 如果你在设置环境变量时使用了特定的 Vite 插件或者工具,确保这些工具也是最新的版本,并且没有与其他插件发生冲突。

    3. vite.config.ts 中检查 define 配置的拼写和语法错误。确保 BASE_IP 已经被正确设置为字符串。

    4. 如果你使用的是开发服务器,确保你的环境变量是在服务器启动前设置的。有时,如果你在服务器已经启动后设置环境变量,它们可能不会立即生效。

    5. 检查是否有其他全局或局部的环境变量配置影响了 BASE_IP 的值。

    6. 如果你使用了任何代码拆分或动态导入,确保 BASE_IP 的访问方式没有被异步操作阻碍,以致于导致 undefined

  • 相关阅读:
    蓝海彤翔亮相2023新疆网络文化节重点项目“新疆动漫节”
    HtmlParse:一款超轻量级的HTML文件解析和爬取工具
    元宇宙影响和增强远程工作的五种方式
    leetcode 004. 寻找两个正序数组的中位数 (c++超详细解法)
    动物餐厅存档分析
    Java WebSocket 获取客户端 IP 地址
    用JAVA如何实现word文档在线预览
    vue、react数据绑定的区别?
    【考研线代】六. 二次型
    会议OA项目(送审后审批人签字功能)
  • 原文地址:https://blog.csdn.net/qq_45525250/article/details/132870095