Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use environment variables inside nuxt.config.js #2998

Closed
manniL opened this issue Mar 11, 2018 · 7 comments
Closed

Use environment variables inside nuxt.config.js #2998

manniL opened this issue Mar 11, 2018 · 7 comments

Comments

@manniL
Copy link
Member

manniL commented Mar 11, 2018

Hey!

Description

I'm currently trying to set several config parameters depending on whether nuxt.js is launched in dev or production mode. To accomplish this, I haven't changed any environment variables before starting nuxt.
Unfortunately, the following won't work (using the axios module) by default:

  /*
   * Axios
   */
  axios: {
    baseURL: process.env.NODE_ENV !== 'production' ? 'http://api.xyz.test' : 'https://api.xyz.com'
  },

If I use console.log(process.env.NODE_ENV) in the nuxt.config.js file, it's undefined (if not set before)

Current possible solution

I only came up with one solution for it:

Set env variables before starting

We could update the package.json scripts to include NODE_ENV or set it manually through the console.
The former blocks "overriding" ENV through the command line, the latter is quite tedious.

"scripts": {
    "dev": "NODE_ENV=development nuxt",
    "build": "NODE_ENV=production nuxt build",
    "start": "NODE_ENV=production nuxt start",
    "generate": "NODE_ENV=production nuxt generate", 
  },

Use dotenv module

Also a way to deal with it, and highly customizable. Still, there should be an easier way to define the "default" configuration which would be enough in many use-cases.

Other solutions?

Are there better ways to accomplish similar behavior easier?

By default, NODE_ENV is set depending on the nuxt mode (nuxt dev = development, production otherwise), but I guess this happens after interpreting the config.

Could we use extend() for it? 🤔

Related

https://github.com/nuxt/nuxt.js/blob/dev/lib/builder/webpack/server.config.js#L50
#1386

This bug report is available on Nuxt.js community (#c2598)
@javialon26
Copy link

@manniL
Copy link
Member Author

manniL commented Mar 11, 2018

@javialon26 Thanks! I know about dotenv and that module, but it's a bit overkill for small applications IMO.

@husayt
Copy link
Contributor

husayt commented Mar 13, 2018

How do you define if it is dev or prod mode if you don't set NODE_ENV env variable?
I use cross-env library and define my scripts as below

    "dev": "nuxt -v&&nuxt",
    "prod-env": "cross-env NODE_ENV=production PORT=4000 HOST=xxx.yyy.com",
    "build-prod": "npm run prod-env npm run build",
    "build": "nuxt -v&&nuxt build",
    "start": "nuxt start",
    "start-prod": "npm run prod-env npm run start"

@husayt husayt closed this as completed Mar 13, 2018
@husayt husayt reopened this Mar 13, 2018
@manniL
Copy link
Member Author

manniL commented Mar 13, 2018

@husayt I thought about some "default" settings (nuxt => development, build & start => production)

@husayt
Copy link
Contributor

husayt commented Mar 19, 2018

@manniL Actually digging deeper I realised this can be a big issue. The way it works now NODE_ENV is defined after processing nuxt.config.js. That means NODE_ENV==production would give different values in nuxt.config.js and elsewhere.

This seems like a bug to me.

@husayt
Copy link
Contributor

husayt commented Mar 19, 2018

This seems to be resolved in next version.

742ea42#diff-bad63423433e9626a156a1e1250d2281

@lock
Copy link

lock bot commented Nov 1, 2018

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@lock lock bot locked as resolved and limited conversation to collaborators Nov 1, 2018
@danielroe danielroe added the 2.x label Jan 18, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants