2017-04-25 178 views
0

我想讓我的url專用。Webpack沒有爲環境變量賦值

在我的Webpack.config.js我宣佈了一些環境變量,並要求dotenv-webpack

plugins: [ 
    new webpack.EnvironmentPlugin([ 
    'NODE_ENV', 
    'MY_URL' 
    ]), 
    new Dotenv({ 
    path: './.env', // Path to .env file (this is the default) 
    safe: false // load .env.example (defaults to "false" which does not use dotenv-safe) 
    }) 
] 

然後,我創建了一個.env並添加MY_URL=http://my.secret.url

但是,當我登錄process.env.MY_URL這是undefined

我該如何解決這個問題?

回答

2

我可以分享適合我的方式。我將我所有的環境變量,以config.js和的package.json設置我的當前環境(本地或正式版),我可以使用npm run localnpm run prod

的package.json

{ 
 
    "name": "workshop_butler_widget", 
 
    "version": "1.0.0", 
 
    "description": "Workshopbutler widget", 
 
    "author": "http://workshopbutler.com", 
 
    "license": "ISC", 
 
    "devDependencies": { 
 
    .... 
 
    }, 
 
    "scripts": { 
 
    "local": "NODE_ENV=local webpack-dev-server", 
 
    "prod": "NODE_ENV=prod webpack-dev-server" 
 
    } 
 
}

配置.js文件

module.exports = { 
 
    local: { 
 
    url: 'http://local' 
 
    }, 
 
    prod: { 
 
    url: 'http://prod' 
 
    } 
 
}

webpack.config.js

const configs = require('./config.js'); 
 
const env = process.env.NODE_ENV; 
 
const current = (env === "local")? configs.local: configs.prod; 
 

 

 
... 
 

 
plugins: [ 
 
    new webpack.DefinePlugin({ 
 
    'NODE_ENV': JSON.stringify(env), 
 
    'MY_URL': JSON.stringify(current.url) 
 
    }) 
 
]

,或者你可以通過webpack.config.js 'FS' NPM包直接讀取文件.ENV