如何在 Nuxt 2 或 3 中使用 .env 变量?

2023-12-19

我的项目根目录中有 .env 文件,在我的 nuxt 配置中,我使用变量来配置 ReCaptcha,如下所示:

import dotenv from 'dotenv'
dotenv.config()

export default {
    modules: [
        ['@nuxtjs/recaptcha', {
          siteKey: process.env.RECAPTCHA_SITE_KEY,
          version: 3,
          size: 'compact'
        }],
    ]
}

在 .env 中像这样:

RECAPTCHA_SITE_KEY=6L....

但应用程序总是失败并出现控制台日志错误:

ReCaptcha 错误:未提供密钥

当我像这样直接硬编码 ReCaptcha 密钥时:siteKey: 6L....应用程序开始工作,所以我猜问题出在 nuxt.config 中读取 .env props

你知道如何解决它吗?

编辑: 我尝试通过 @kissu 推荐和我在这里找到的示例更新我的 nuxt.config:https://www.npmjs.com/package/@nuxtjs/recaptcha https://www.npmjs.com/package/@nuxtjs/recaptcha

所以有新的 nuxt.config 也不起作用:

export default {
    modules: [
       '@nuxtjs/recaptcha',
    ],
    publicRuntimeConfig: {
       recaptcha: {
         siteKey: process.env.RECAPTCHA_SITE_KEY,
         version: 3,
         size: 'compact'
       }
  }
}

如果你的 Nuxt 版本是2.13或以上, you don't需要使用@nuxtjs/dotenv或类似的东西,因为它已经备份到框架中。

要使用某些变量,您需要有一个.env文件位于项目的根目录下。 git 应该忽略这一点。然后你可以在那里输入一些键,例如

PUBLIC_VARIABLE="https://my-cool-website.com"
PRIVATE_TOKEN="1234qwer"

In your nuxt.config.js,您必须将它们输入到 2 个对象中,具体取决于您的用例publicRuntimeConfig or privateRuntimeConfig:

export default {
  publicRuntimeConfig: {
    myPublicVariable: process.env.PUBLIC_VARIABLE,
  },
  privateRuntimeConfig: {
    myPrivateToken: process.env.PRIVATE_TOKEN
  }
}

差异: publicRuntimeConfig基本上可以在任何地方使用,同时privateRuntimeConfig只能在 SSR 期间使用(密钥只有在未发送到浏览器时才能保持私有)。

一个流行的用例privateRuntimeConfig是用它来nuxtServerInit https://nuxtjs.org/docs/2.x/concepts/nuxt-lifecycle/#server或者在构建过程中(或者yarn build or yarn generate)以使用无头 CMS 的 API 调用填充应用程序。

更多信息可以在这篇博文中找到:https://nuxtjs.org/blog/moving-from-nuxtjs-dotenv-to-runtime-config/ https://nuxtjs.org/blog/moving-from-nuxtjs-dotenv-to-runtime-config/


  • 然后,您将能够访问它到任何.vue直接归档
this.$config.myPublicVariable
  • 你可以通过 Nuxt 访问它/plugins也用这个语法
export default ({ $axios, $config: { myPublicVariable } }) => {
  $axios.defaults.baseURL = myPublicVariable
}
  • 如果您的 Nuxt 模块或任何键中需要此变量nuxt.config.js文件,直接写入
process.env.PRIVATE_TOKEN

有时,语法可能略有不同 https://github.com/nuxt-community/gtm-module#runtime-config,在这种情况下请参阅 Nuxt 模块文档。

// for @nuxtjs/gtm
publicRuntimeConfig: {
  gtm: {
    id: process.env.GOOGLE_TAG_MANAGER_ID
  }
},

PS:如果你使用target: server(默认值),您可以yarn build and yarn start将您的应用程序部署到生产环境。然后,更改您想要的任何环境变量yarn start再次。无需重建。由此得名运行时配置!

Nuxt3更新

正如中提到的the docs https://nuxt.com/docs/bridge/overview#update-runtime-config,您可以对 Nuxt3 使用以下内容

nuxt.config.js

import { defineNuxtConfig } from 'nuxt3'

export default defineNuxtConfig({
  runtimeConfig: {
    public: {
      secret: process.env.SECRET,
    }
  }
}

在任何组件中

<script setup lang="ts">
  const config = useRuntimeConfig()
  config.secret
</script>

在类似的可组合项中/composables/test.js像这样

export default () => {
  const config = useRuntimeConfig()
  console.log(config.secret)
}

这里是官方文档 https://v3.nuxtjs.org/api/composables/use-runtime-config#useruntimeconfig对于那部分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Nuxt 2 或 3 中使用 .env 变量? 的相关文章

随机推荐

  • 如何在 Spring Boot 上替换 ErrorController 已弃用的功能?

    在 Spring boot 上有一个自定义错误控制器 package com example controllers import org springframework stereotype Controller import org s
  • Android WebView 未正确加载

    我遇到了一些关于 Android 上的 WebViewClient 的问题 该网站有效完美在任何移动浏览器上 包括我为调试目的设置的 ChromeViewClient 使用任何其他移动浏览器时 我正在加载的网站没有任何问题或错误 使用 Ch
  • 无法等待异步 lambda

    考虑到这一点 Task task new Task async gt await TaskEx Delay 1000 task Start task Wait 调用 task Wait 不会等待任务完成 而是立即执行下一行 但如果我将异步
  • jQuery 多个选择器与 .val()

    考虑 id txtYear val 为什么这只给我在第一个输入框中输入的值 其ID以 txtYear 开头 我想获取 ID 以 txtYear 开头的所有输入框的值 这就是 val 的工作原理 您必须循环遍历元素才能获取所有值 let va
  • 在 d3.js 中,对于空数据跳过append()

    我正在用小圆项目符号绘制折线图 但是 数据中存在漏洞 这些漏洞在我的数组中由 null 表示 当然 没有数据的地方就不应该有圆圈 但 d3 的append 方法无论如何都会添加它们 我该如何避免这种情况 这是一个jsFiddle 样机 ht
  • 从 .glsl 文件读取 OpenGL 着色器语言

    我正在尝试从文件中读取着色器字符串 但是 我遇到了一个问题glShaderSource 功能线 如你所知 glShaderSource takes const char 我必须声明char 用于从文件中读取 因此 我使用强制转换来转换类型
  • .NET 异常有多慢?

    我不想讨论何时抛出异常以及不抛出异常 我想解决一个简单的问题 99 的情况下 不抛出异常的争论都围绕着异常缓慢而另一方声称 通过基准测试 速度不是问题 我读过大量与这一方面或另一方面相关的博客 文章和帖子 那么是哪一个呢 答案中的一些链接
  • 列表理解同时迭代两个变量[重复]

    这个问题在这里已经有答案了 是否有可能使用列表理解同时迭代两个变量 同时增加两个变量的循环位置 请参阅下面的示例 a 1 2 3 4 5 b 6 7 8 9 10 c i j for i in a for j in b This works
  • 在 Java 中如何查找前 2 个星期一的日期?

    可能是这样的 for int i 0 i lt 15 i Calendar cal new GregorianCalendar cal add Calendar DAY OF MONTH 1 if cal Calendar DAY OF W
  • 如何使用 JS (Internet Explorer) 以编程方式下载文件

    我有一个网页 其中有一个按钮 单击该按钮后 会生成一个 通过从 json 进行转换 csv 文件 该文件由浏览器下载 它本质上使用了这个逻辑jsfiddle https jsfiddle net 1ecj1rtz 这一切在 Chrome 中
  • C# DataGridViewButtonCell 设置按钮文本

    我需要添加我的DataGridViewButtonCell to Column 并且我需要用不同的名字来命名彼此 但我没有找到任何文本属性 有人可以帮我吗 我做那些事 DataGridViewButtonCell b new DataGri
  • linux如何删除第N行的最后一个字符

    我有一个具有类似结构的大文档 Data800 Data900 Data1000 我将如何删除第三行到最后一行的最后一个字符 在本例中 逗号位于 Data1000 旁边 输出应如下所示 Data800 Data900 Data1000 它始终
  • 系统上的 -isystem 包含目录会导致错误

    下面的代码是怎么回事 include
  • ValueError:无法从重复的轴 Pandas 重新索引

    所以我有一个基于fund id生成的时间序列数组 def get adj nav self fund id df nav read frame super class self filter fund id fund id nav gt 0
  • 使用 autofac 创建需要参数的对象的正确方法是什么?

    我想我已经了解了有关依赖倒置和使用 IoC 容器的大部分知识 但有一件事对我来说仍然不太清楚 如何使用 autofac 来自动化以下工厂 public class WidgetFactory public static IWidget Cr
  • 计算颜色值关系[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有可以计算两种颜色之间关系的网络应用程序 我有一个现有的样式指南 其中包含已确定的十六进制值 我想将
  • 我无法从 Firebase 存储(Angular/Ionic)获取图像 downloadUrl

    我正在尝试从 firebase 获取图像的 downloadUrl 所有属性 如 timeCreated fullPath contentType 都运行良好并正确推送 但我不知道为什么 downloadUrl 不起作用 captureAn
  • $_POST 中的 JQuery Mobile POST 数据为空

    我遇到了 JQuery Mobile 对我来说是新的 和 AJAX 调用的问题 我正在使用以下代码 ajax type POST url http correct url post todoitem beforeSend addHeader
  • 将富文本粘贴到 Flash 中?

    粘贴到 Flash 时是否可以捕获富文本 使用 Flex TextEditArea 我可以在 Flash 本身中粘贴格式丰富的文本 但如果我尝试从外部源 例如网页 Microsoft Word 等 粘贴 它会以纯文本形式出现 反之亦然 如果
  • 如何在 Nuxt 2 或 3 中使用 .env 变量?

    我的项目根目录中有 env 文件 在我的 nuxt 配置中 我使用变量来配置 ReCaptcha 如下所示 import dotenv from dotenv dotenv config export default modules nux