微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Webpack 5 中访问 process.env.VAR?

如何解决如何在 Webpack 5 中访问 process.env.VAR?

我以前从未使用过 Webpack,我正在开发一个只有普通 JS 和 HTML 的项目。我在访问我在 .env 中设置的值时遇到问题。这是我的配置。

const path = require("path");
const dotenv = require('dotenv');

var webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const Dotenv = require('dotenv-webpack');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');

module.exports = () => {

  env = dotenv.config().parsed;
  
  const envKeys = Object.keys(env).reduce((prev,next) => {
    prev[`process.env.${next}`] = JSON.stringify(env[next]);
    return prev;
  },{});
  
  return {
    entry: {
      main: './src/index.js'
    },output: {
      path: path.join(__dirname,'../build'),filename: '[name].bundle.js'  
    },mode: 'development',devServer: {
      contentBase: "./src/",publicPath: "./src/",compress: true,port: 9000,overlay: true,disableHostCheck: true
    },devtool: 'inline-source-map',resolve: {
      alias: {
          process: "process/browser"
      }},module: {
      rules: [
        {
          test: /\.js$/,exclude: /node_modules/,use: {
            loader: 'babel-loader'
          }
        },{
          test: /\.css$/,use: [
            'style-loader','css-loader'
          ]
        },{
          test: /\.(png|svg|jpe?g|gif)$/,use: [
            {
              loader: 'file-loader',options: {
                name: '[name].[ext]',outputPath: 'assets/'
              }
            }
          ]
        },{
          test: /\.html$/,use: {
            loader: 'html-loader',options: {
              //attributes: ['img:src',':data-src'],minimize: true
            }
          }
        }
      ]
    },plugins: [
      new webpack.ProvidePlugin({
        process: 'process/browser',}),new Dotenv(),new webpack.DefinePlugin(envKeys),new HtmlWebpackPlugin({
        template: './src/index.html',filename: 'index.html'
      }),]
  }
};

如您所见,我正在使用 dotEnv、definePlugin,甚至 dotEnv-webpack 插件。不幸的是,这些解决方案似乎都不允许我访问 process.env.originURL。

originURL=https://localhost:3000

我没有在我的 javascript 文件 index.js 中导入或要求任何内容。我假设这应该可行,但控制台告诉我进程未定义。

console.log(process.env.originURL);

如何在我的 index.js 中访问 process.env.originURL?

解决方法

它应该可以工作。也许你可以试试这个版本:

 new Dotenv({ systemvars: true })

如果它仍然不起作用,请显示您的 package.json 以及您的 .env 文件(当然是随机值)。 .env 是您应用的根目录吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?