Vue.js 环境变量在Nuxt应用程序中不可用

Vue.js 环境变量在Nuxt应用程序中不可用,vue.js,environment-variables,nuxt.js,Vue.js,Environment Variables,Nuxt.js,按照这些文档,我以这种方式设置了.env变量IFRAME\u CHECKER: .env: nuxt.config.js: publicRuntimeConfig:{ axios:{ baseURL:process.env.BASE\u URL }, iframeChecker:process.env.IFRAME\u CHECKER } 然而,在我挂载的钩子中的组件中,例如,.config.iframeChecker返回null。为什么?重新安装@nuxt/dotenv 环境署署长 IFU检测

按照这些文档,我以这种方式设置了.env变量IFRAME\u CHECKER:

.env:

nuxt.config.js:

publicRuntimeConfig:{ axios:{ baseURL:process.env.BASE\u URL }, iframeChecker:process.env.IFRAME\u CHECKER } 然而,在我挂载的钩子中的组件中,例如,.config.iframeChecker返回null。为什么?

重新安装@nuxt/dotenv

环境署署长

IFU检测器=https://path.to.some.script 在您的nuxt.config.js中:

导出默认值{ publicRuntimeConfig:{ axios:{ baseURL:process.env.BASE\u URL }, iframeChecker:process.env.IFRAME\u CHECKER } } 你可以这样访问吗

此.$config.IFRAME\u检查程序
我无法复制你的问题

注意:您不需要@nuxtjs/dotenv包

我是通过以下方式实现的:

nuxt.config.js

环境署署长

iframeChecker应如下所示:

mycomponent.vue


但首先,是时候从@nuxtjs/dotenv模块迁移到使用我们新的运行时配置了,所以使用此配置模式的目的是不要使用dotenv,对吗?你不应该再使用@nuxt/dotenv模块了,没错。虽然您可能仍然需要在配置中使用常规的dotenv模块,以便将变量加载到process.env.No need中,但dotenv仍然会备份到Nuxt中。现在这个模块中没有任何内容tbh。你能在nuxt.config.js的顶部添加一个console.logprocess.env.BASE_URL吗?这样我们就可以检查值是否在process.env中?在那里不可能使用console.log,至少在我的情况下它不起作用。它应该在导出默认值{…}之前,在文件的最顶部起作用。运行nuxt后应立即打印输出。我的想法是按预期使用常规的dotenv模块,并将require'dotenv.config添加到配置文件的顶部,以便将变量加载到process.env中,您可以在publicRuntimeConfig中使用它们。您的错误可能是由于变量没有实际加载到process.env中,因此值为null。是的,我将其放在导出默认值之前,不会记录任何内容。请不要介意。Nuxt实际上会自动填充process.env。我也无法使用您的代码重现您的问题。如果你能提供一个有这个问题的最小示例项目,那就太棒了。它现在可以工作了,自从我发布了我的问题后,我什么都没做,只是重新启动了我的机器。这已经不是第一次发生在我身上了:在某件事情上被困了几个小时,第二天它就起作用了。我怀疑Webpack有问题:即使在杀死npm run dev或npm run serve进程并重新启动它时,类似于本问题中讨论的问题可能会一直存在,直到机器重新启动。这真是令人难以置信的恼火,有人听过吗?我很高兴你明白了@drake035
IFRAME_CHECKER=https://path.to.some.script
export default {
  publicRuntimeConfig: {
    iframeChecker: process.env.IFRAME_CHECKER || 'https://nuxtjs.org'
  },
  ...
}
IFRAME_CHECKER=http://test
export default {
  ...
  mounted() {
    console.log(this.$config.iframeChecker)
  }
  ...
}