Un problème que je rencontrais était que J'ai utilisé l'installation de webpack-simple. pour VueJS qui ne semblait pas inclure un dossier de configuration des variables d'environnement. Je n'ai donc pas pu modifier les fichiers de configuration env.test,development, et production.js. Les créer n'a pas aidé non plus.
Les autres réponses n'étaient pas assez détaillées pour moi, alors j'ai juste "bricolé" avec webpack.config.js. Et ce qui suit a bien fonctionné.
Pour que les variables d'environnement fonctionnent, le fichier webpack.config.js doit contenir les éléments suivants en bas de page
if (process.env.NODE_ENV === 'production') {
module.exports.devtool = '#source-map'
// http://vue-loader.vuejs.org/en/workflow/production.html
module.exports.plugins = (module.exports.plugins || []).concat([
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: '"production"'
}
}),
new webpack.optimize.UglifyJsPlugin({
sourceMap: true,
compress: {
warnings: false
}
}),
new webpack.LoaderOptionsPlugin({
minimize: true
})
])
}
Sur la base de ce qui précède, en production vous pourrez obtenir la variable NODE_ENV.
mounted() {
console.log(process.env.NODE_ENV)
}
Il existe peut-être de meilleures façons de procéder, mais si vous souhaitez utiliser les variables d'environnement dans le cadre du développement, vous devez procéder comme suit :
if (process.env.NODE_ENV === 'development') {
module.exports.plugins = (module.exports.plugins || []).concat([
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: '"development"'
}
})
]);
}
Maintenant si vous voulez ajouter d'autres variables avec serait aussi simple que :
if (process.env.NODE_ENV === 'development') {
module.exports.plugins = (module.exports.plugins || []).concat([
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: '"development"',
ENDPOINT: '"http://localhost:3000"',
FOO: "'BAR'"
}
})
]);
}
Je dois également noter que vous semblez avoir besoin des guillemets doubles "''" pour une raison quelconque.
Donc, dans le domaine du développement Je peux maintenant accéder à ces variables d'environnement :
mounted() {
console.log(process.env.ENDPOINT)
console.log(process.env.FOO)
}
Voici l'ensemble du webpack.config.js, juste pour le contexte :
var path = require('path')
var webpack = require('webpack')
module.exports = {
entry: './src/main.js',
output: {
path: path.resolve(__dirname, './dist'),
publicPath: '/dist/',
filename: 'build.js'
},
module: {
rules: [
{
test: /\.css$/,
use: [
'vue-style-loader',
'css-loader'
],
}, {
test: /\.vue$/,
loader: 'vue-loader',
options: {
loaders: {
}
// other vue-loader options go here
}
},
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/
},
{
test: /\.(png|jpg|gif|svg)$/,
loader: 'file-loader',
options: {
name: '[name].[ext]?[hash]'
}
}
]
},
resolve: {
alias: {
'vue$': 'vue/dist/vue.esm.js'
},
extensions: ['*', '.js', '.vue', '.json']
},
devServer: {
historyApiFallback: true,
noInfo: true,
overlay: true
},
performance: {
hints: false
},
devtool: '#eval-source-map'
}
if (process.env.NODE_ENV === 'production') {
module.exports.devtool = '#source-map'
// http://vue-loader.vuejs.org/en/workflow/production.html
module.exports.plugins = (module.exports.plugins || []).concat([
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: '"production"'
}
}),
new webpack.optimize.UglifyJsPlugin({
sourceMap: true,
compress: {
warnings: false
}
}),
new webpack.LoaderOptionsPlugin({
minimize: true
})
])
}
if (process.env.NODE_ENV === 'development') {
module.exports.plugins = (module.exports.plugins || []).concat([
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: '"development"',
ENDPOINT: '"http://localhost:3000"',
FOO: "'BAR'"
}
})
]);
}
0 votes
Quel modèle de vue-cli utilisez-vous ? Si Webpack, voir vuejs-templates.github.io/webpack/env.html
0 votes
Aussi, ce que vous demandez n'est pas clair. Avez-vous une vraie question ?
1 votes
Si vous utilisez Webpack. oui
process.env
fonctionne pour obtenir les variables d'environnement.0 votes
J'ai créé mon projet avec
vue create my-app
yenv
les variables ne fonctionnent pas selon les documents que vous avez postés @Phil3 votes
Vous devez préfixer la variable avec ' VUE_APP_'. cli.vuejs.org/guide/mode-and-env.html#example-staging-mode