在 nuxt 中针对不同情况使用不同的环境

Posted

技术标签:

【中文标题】在 nuxt 中针对不同情况使用不同的环境【英文标题】:using different env for different cases in nuxt 【发布时间】:2020-06-12 13:18:50 【问题描述】:

我是 Nuxt 或任何类型的节点东西的新手。我正在尝试为不同的情况创建不同的环境,例如如果我想测试我的应用程序,我希望开发对象块运行(指向开发端点)等,以下是一个示例

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

所以当我执行npm run dev 时,它会使用那些端点运行应用程序从中,我尝试观看this,但我无法通过 NODE_ENV=config.dev(鉴于 config 是一个包含对象的文件)我怎样才能让我的应用程序像那样工作?

详细的回答会很有帮助。

【问题讨论】:

【参考方案1】:

我已经创建了一个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';

现在,每当我想在 nuxt.config.js 中使用 apiEndPoint 值时,我都会以 MasterKeys[appEnv].apiEndPoint 的身份访问

如果我想在组件中使用来自config.js 的任何配置键,我将使用nuxt.config.js 的env 属性,如下例所示。

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

然后在组件中,我可以将该值作为process.env.apiEndPoint 访问

并且将在package.json 中声明 env 如下

  "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"
  

希望对你有帮助!!!!

【讨论】:

[appEnv] 是什么,我看到你创建了一个对象但[appEnv] 是一个数组语法? 让 appEnv = process.env.NODE_ENV || '发展';在 nuxt.config.js 中声明环境变量 默认意味着当您在 package.json 中运行 npm run dev 时,我们不会提供任何 NODE_ENV,因此根据我们在 nuxt.config.js 中为 appEnv 的声明,它将采用 development nuxt.config.js 不允许你在模块外导入语句。 你能详细说明吗?【参考方案2】:

创建两个单独的配置文件并使用条件导入它们,并在nuxt配置中使用如下

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

module.exports = 
  axios: 
    baseURL: CONFIG.API_BASE
  

【讨论】:

但它不仅仅是一个 url,还有 r 一堆 url 需要根据将运行的环境以及如何在 nuxt 配置中使用该服务器进行更改? 当你说需要('dev-config')时,文件名应该是dev-config.env吗?

以上是关于在 nuxt 中针对不同情况使用不同的环境的主要内容,如果未能解决你的问题,请参考以下文章

Nuxt js开发环境中CPU使用率高

python配置虚拟开发环境

Azure Devops 中针对不同环境的 app.config 转换

AWS Elastic Beanstalk - 针对不同环境的单独配置

Azure Service Fabric - 针对不同环境的不同发布设置

httprunner学习13-环境变量.env