используя разные env для разных случаев в nuxt - PullRequest
2 голосов
/ 28 февраля 2020

Я новичок в Nuxt или любом другом типе узлов. Я пытаюсь создать другую среду для разных случаев, например, если я хочу протестировать свое приложение, я хочу, чтобы блок объекта dev работал (указывая на конечную точку dev) et c, ниже приведен пример

[
 prod: {
   server: www.mysite.com,
   api: 'www.jsonplaceholder.com/'
  },
 dev: {
   server: www.internal-mysite.com,
   api: 'www.jsonplaceholder.com/'
  }
]

, поэтому, когда я делаю npm run dev, он запускает приложение с теми конечными точками, которые я знаю, что .env не разрешает объекты или массив, поэтому я не могу использовать что. Я пытался dotenv, но не очень помог, я могу выйти из него, я пытался смотреть это , но я не могу передать NODE_ENV = config.dev (учитывая, что config - это файл, содержащий объект) Как я могу заставить свое приложение работать так?

Подробный ответ будет полезен.

Ответы [ 2 ]

6 голосов
/ 02 марта 2020

Я создал один config.js такой же, как показано ниже

const MasterKeys = {
  development: {
    apiEndPoint: 'example.com',
    clientId: '1234567',
    clientSecret: '11111111'
  },
  staging: {
    apiEndPoint: 'staging.example.com',
    clientId: '1234567',
    clientSecret: '11111111'
  },
  production: {
    apiEndPoint: 'prod.example.com',
    clientId: '1234567',
    clientSecret: '11111111'
  }
};

export { MasterKeys };

Импортировал этот файл в nuxt.config.js, как показано ниже

let appEnv = process.env.NODE_ENV || 'development';
import { MasterKeys } from './config.js';

Теперь, когда я хочу использовать apiEndPoint значение в nuxt.config. js Я получу доступ как MasterKeys[appEnv].apiEndPoint

И если я хочу использовать любой ключ конфигурации из config.js в компоненте, я буду использовать свойство env nuxt.config.js, как показано ниже.

  env: {
    apiEndPoint: MasterKeys[appEnv].apiEndPoint,
    clientId: MasterKeys[appEnv].clientId
  }

И затем в компонентах я могу получить доступ к этому значению как process.env.apiEndPoint

И объявить env в package.json как показано ниже

  "scripts": {
    "dev": "nuxt",
    "stagingbuild": "NODE_ENV=staging nuxt build",
    "staging": "NODE_ENV=staging nuxt start",
    "build": "NODE_ENV=production nuxt build",
    "start": "NODE_ENV=production nuxt start"
  }

Надеюсь это тебе поможет !!!!

1 голос
/ 28 февраля 2020

Создайте два отдельных файла конфигурации и импортируйте их с условием и используйте в конфигурации nuxt следующим образом

const CONFIG = process.env.NODE_ENV === 'development' ? require('dev-config') : require('prod-config');

module.exports = {
  axios: {
    baseURL: CONFIG.API_BASE
  }
}
...