我有一个将成为AWS Lambda的NodeJS应用程序.

该应用程序的主JS文件是app.js.

我还有一个./lib/index.js,它是主库,包含所有其他参考库代码.

我的 idea 是将webpack设置为使用./lib/index.js作为条目,并创建一个新的./lib/index.js,它是所有引用的依赖项/文件的组合.

我在这个问题上运行了webpack,处理了一些小问题;我有新的./lib/index.js.

问题是主Lambda代码具有以下内容:

const lib           = require('./lib/index');
...
lib.runRoutines(date);

Webpack似乎将lib.runRoutines重命名为某个新名称,我不知道它是什么,在代码中也不容易找到.

有没有办法阻止webpack重命名导出的函数,至少对于顶层库是这样?

-更新添加webpack配置 我try 过TerserPlugin,但我不是不正确地使用它,就是其他地方有问题,因为在创建的JavaScript文件中仍然没有"runRoutine"函数.

以下是我目前的webpack.config.js:

const path = require('path');
const NodePolyfillPlugin = require("node-polyfill-webpack-plugin");
const TerserPlugin  = require('terser-webpack-plugin')
const webpack = require('webpack');

module.exports = {
    entry: './src/lib/index.js',
    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: {
        filename: 'index.js',
        path: path.resolve(__dirname, 'build', 'lib'),
    },
    plugins: [
        new NodePolyfillPlugin(),
        new webpack.IgnorePlugin({resourceRegExp: /.sql$/ })
    ]
};

推荐答案

试试Terser插件吧.

以下各项中的每How to disable in Webpack to rename of function names? TypeScript, Javascript项:

WebPack.conf的Terser配置:

optimization: {
    minimize: true,
    minimizer: [
        new TerserPlugin({
            terserOptions: {
                keep_classnames: true,
                keep_fnames: true
            }
          })
        ]
  },

有关可用选项,请参阅Terser Plugin Documentation.

Node.js相关问答推荐

无法验证叶签名|无法验证第一个证书

Sequelize、postgres和posgis:在n°;公里

在函数上执行 toString 的Typescript 会产生奇怪的字符 (path_1, (0, Promise.writeFile))

如何模拟 mysql2 `getConnection`

在全局对象上声明的函数

Prisma,只有一个用户的行可以有真值,@@unique(userId, isActive)

在 getServerSideProps 中使用 EmailProvider 获取 NextAuth 会话会抛出 fs找不到模块

如何在没有 Typescript 的情况下以交互方式使用 Create-React-App?

多字段传递获取查询失败

Electron 模板(Typescript + Webpack)中的这个 Electron Forge ERROR 是什么?

更新文档数组中的文档 Mongoose

Mongoose,如何一次更新多个?

Cypress net::ERR_EMPTY_RESPONSE 在真实服务器调用上

如何在 Node.js 中逐字节读取二进制文件

如何在 NodeJS 中获取操作系统用户名?

如何使用 Puppeteer 从输入中删除现有文本?

node/express:使用 Forever 连续运行脚本时设置 NODE_ENV

MongoDB Node findone如何处理没有结果?

向 Stripe 提交付款请求时出现没有此类令牌错误

如何在express 中设置默认路径(路由前缀)?