我在.env文件中做了以下操作: APP_ENV =生产 MIX_APP_ENV =“ $ {APP_ENV}”
在webpack.mix.js文件中: const APP_ENV = process.env.MIX_APP_ENV;
使用if else运算符,我检查是否未为APP_ENV变量分配任何内容。 我需要执行以下操作-根据环境,将sass和js文件编译到特定文件夹中。
我正在尝试执行以下操作,但没有任何效果:
const APP_ENV = process.env.MIX_APP_ENV;
if (APP_ENV == 'dev' || APP_ENV == 'production') {
mix
.js('resources/js/app.js', 'js')
.sass('resources/sass/app.scss', 'css')
.version();
} else {
mix
.setPublicPath('public/build')
.setResourceRoot('/build/')
.js('resources/js/app.js', 'js')
.sass('resources/sass/app.scss', 'css')
.version();
}
答案 0 :(得分:0)
您不能那样使用它,因为您位于JS
文件中,而JS不必访问它。
您可以使用npm
安装dotenv npm install dotenv --save
并像这样使用它:'require('dotenv')。load();'在您的混合文件中,现在您可以做到:
if (process.env.NODE_ENV !== 'production') {
// code
}
答案 1 :(得分:0)
无需在.env文件中创建中间变量MIX_APP_ENV。 以下代码有效:
require('dotenv').config();
const env = process.env.APP_ENV;
答案 2 :(得分:0)
我意识到这是一个古老的问题,但是最简单的解决方法(使您的代码正常工作)是更改...
我在.env文件中执行了以下操作:APP_ENV = production MIX_APP_ENV =“ $ {APP_ENV}”
.. to ..
APP_ENV =生产 MIX_APP_ENV =生产
(您的webpack.mix.js无法将“ $ {APP_ENV}”转换为“生产”)