2017-04-25 140 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