Использование переменных среды в nuxt.config. js - PullRequest
2 голосов
/ 29 января 2020

Я использую Nuxt & Ax ios, но у меня возникают проблемы с использованием переменных среды, когда строит приложение с моей локальной машины .

Я установил модуль @ nuxtjs / dotenv, чтобы решить эту проблему, но проблемы по-прежнему возникают.

Примечание. Переменные среды работают нормально при создании приложения в среде моего хостинг-провайдера. Это только здание из моей локальной машины, которая доставляет мне неприятности. Моя IDE - VS Code.

Вот мой топор ios, настроенный внутри nuxt.config. js:

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

Вместо этого просто задается базовый URL-адрес ax ios для того же порта host:, на котором работает сервер по умолчанию. Пример: localhost: 4000

Я нашел следующую документацию из модуля @ nuxtjs / dotenv: https://github.com/nuxt-community/dotenv-module#using -env-file-in-nuxtconfig js. Это инструктирует вас добавить следующее в начало nuxt.config. js:

require('dotenv').config()

Это работает для локального построения; мои переменные из .env распознаются! Однако, поскольку dotenv является зависимостью от dev, это приводит к тому, что при развертывании на моем хостинг-провайдере сборка достигает sh, поскольку модуль не распознается.

Я знаю, что могу определять переменные среды непосредственно в Создайте команду следующим образом, но Я бы предпочел НЕ делать этого :

NUXT_ENV_BASE_URL=some.api.com nuxt build 

Есть ли простой способ заставить переменные среды работать локально внутри nuxt.config. js во время процесс сборки, который также хорошо работает при развертывании в производство ??

Спасибо!

1 Ответ

0 голосов
/ 25 апреля 2020

Я установил следующее как зависимость dev; @ Nuxtjs / dotenv. Затем я добавил следующее в свой nuxt.config. js. Я нашел это утверждение импорта в статье и попробовал его. К счастью, у меня это сработало.

import dotenv from "dotenv";
dotenv.config();

env: {
  DB_HOST: process.env.DB_HOST
},

Я создал файл с именем .env со следующим содержанием

DB_HOST=http://localhost:5001/
...