You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

阻止WebPack替换AWS Lambda中所有process.env.VARNAME实例

解决Webpack打包AWS Lambda时process.env被静态替换的问题

要保留Lambda运行时可读取的process.env变量,你需要调整Webpack配置,阻止它对process对象进行静态替换,具体操作如下:

  • 添加node.process配置项:在Webpack配置中显式设置node.process: true,告诉Webpack保留原生的process对象引用,而非静态替换其中的环境变量。
  • 确认无额外DefinePlugin干扰:你的当前配置中没有手动引入DefinePlugin,这很好——如果后续添加了该插件,不要用它来替换process.env相关字段。
  • 补全依赖引入:原配置中使用了path.resolve但未引入path模块,需要补上该引用避免打包报错。

修改后的完整webpack.config.js配置如下:

const NodePolyfillPlugin = require("node-polyfill-webpack-plugin");
const TerserPlugin  = require('terser-webpack-plugin');
const webpack = require('webpack');
const path = require('path'); // 补全path模块引入

module.exports = {
    entry: {
        entry: './src/lib/index.js',
    },
    target: 'node',
    // 新增配置:保留process对象的原生引用
    node: {
        process: true
    },
    module: {
        rules: [
            {
                test: /\.ts?$/,
                use: 'ts-loader',
                exclude: /node_modules/,
            }
        ]
    },
    resolve: {
        extensions: ['.tsx', '.ts', '.js'],
        fallback: {
            "fs": false,
            "tls": false,
            "net": false,
            "dns": false,
            "child_process": false,
            "dtrace-provider": false
        }
    },
    optimization: {
        minimize: true,
        minimizer: [
            new TerserPlugin({
                terserOptions: {
                    keep_classnames: true,
                    keep_fnames: true
                }
            })
        ]
    },
    output: {
        library: {
            type: 'commonjs-static'
        },
        filename: "lib.js",
        path: path.resolve(__dirname, 'build'),
        chunkFormat: 'commonjs'
    },
    plugins: [
        new NodePolyfillPlugin()
    ]
};

原理说明

Webpack默认会对process.env做静态分析和替换,这在前端浏览器环境中是合理优化,但对于Node.js(包括AWS Lambda)环境,我们需要保留process对象的原生引用,这样运行时才能动态读取Lambda配置的环境变量。通过node.process: true,我们强制Webpack放弃对process对象的静态处理,让代码在运行时直接访问Node.js的原生process对象。

内容的提问来源于stack exchange,提问作者Doug

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 23:21:01