node.js - 在 nuxt.config.js 中使用环境变量

标签 node.js axios environment-variables nuxt.js

我正在使用 Nuxt 和 Axios,但在 时无法使用环境变量建筑来自我的 的申请本地机 .

我已经安装了 @nuxtjs/dotenv 模块试图解决这个问题,但仍然有问题。

注意:在我的托管服务提供商环境中构建应用程序时,环境变量可以正常工作。它只是从我的本地机器上构建的,这给我带来了麻烦。我的 IDE 是 VS Code。

这是我在 nuxt.config.js 中的 axios 设置:

module.exports = {
  ...
  buildModules: [
    '@nuxtjs/dotenv'
  ],
  modules: [
    // Doc: https://axios.nuxtjs.org/usage
    '@nuxtjs/axios'
  ],
  axios: {
    baseURL: process.env.BASE_URL
  },
  ...
}

我的 .env 文件具有以下内容:
BASE_URL="https://some.api.com"

构建应用程序时无法识别 .env 变量:
nuxt build

相反,它只是将 axios 基本 url 设置为服务器默认运行的相同主机:端口。例如:本地主机:4000

我从@nuxtjs/dotenv 模块中找到了以下文档:https://github.com/nuxt-community/dotenv-module#using-env-file-in-nuxtconfigjs .这指示您将以下内容添加到 nuxt.config.js 的顶部:
require('dotenv').config()

这适用于本地构建;我的 .env 变量被识别!但是,由于 dotenv 是一个开发依赖项,因此在部署到我的托管服务提供商时会导致构建崩溃,因为无法识别该模块。

我知道我可以直接在构建命令中定义环境变量如下但是我不想这样做 :
NUXT_ENV_BASE_URL=some.api.com nuxt build 

有没有一种简单的方法可以让环境变量在构建过程中在 nuxt.config.js 中本地工作,并且在部署到生产环境时也能正常工作?

谢谢!

最佳答案

2020-09-26 更新
从 2.13.0 开始,我删除了 @nuxtjs/dotenv。我的 nuxt.config.js 现在简单地读取如下,删除了 dotenv 导入。我没有进行其他代码更改,其余功能对我来说完全相同。

env: {
  DB_HOST: process.env.DB_HOST
},
我的 .env 包含以下内容。
DB_HOST=http://localhost:5001/
原始答案
我安装了以下作为开发依赖项; @nuxtjs/dotenv。然后我将以下内容添加到我的 nuxt.config.js 中。我找到了这个导入声明 in an article并尝试了。谢天谢地,它对我有用。
import dotenv from "dotenv";
dotenv.config();

env: {
  DB_HOST: process.env.DB_HOST
},
我创建了一个名为 .env 的文件,其内容如下
DB_HOST=http://localhost:5001/

关于node.js - 在 nuxt.config.js 中使用环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59973709/

相关文章:

javascript - MySql、NodeJS、ExpressJS 和 bcrypt : what is the best way to handle users' login?

javascript - 为什么 vue.js 语句与 axios 开始较晚?

linux - 在 Jenkins 中找不到环境变量

javascript - cookie 是从服务器向客户端发出指令以执行某些 js 代码的唯一方法吗?

javascript - 为什么我应该从 Axios 调用中返回 "undefined",而它应该返回对象?

javascript - NPM 包 : best practices and exposing multiple import paths

mysql - 嗨,我正在工作 Node/express.js 项目,Sequelize 作为 ORM 和 MySQL 作为 DB。谁能知道PLZ是如何固定的

apache-spark - 如何使用spark-submit在集群模式下将环境变量传递给spark driver

javascript - 自动平滑向下滚动页面

node.js - 如何使用 .forEach() 插入多个集合并检查它是否存在