IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 函数内部获取函数名称,webpack配置非严格模式打包 -> 正文阅读

[JavaScript知识库]函数内部获取函数名称,webpack配置非严格模式打包

网上文章很多,但是最终都未实现;

经个人实践,解决几个问题

一般的解决方案都是在.babelrc中增加plugins的处理,但我配置的无这个文件

直接在根目录新建.babelrc即可,有些工程将babel的配置写在package.json中,会报错有两个配置,删除package.json中的babel配置即可;如下

.babelrc内容,安装 "babel-plugin-transform-strict-mode": "^6.24.1",

在探索过程中我还安装过 "babel-plugin-transform-remove-strict-mode": "0.0.2",如果不行,尝试安装这个插件

{
    "plugins": [
        ["@babel/plugin-transform-modules-commonjs", { "strictMode": false }]
      ]
  }

babel版本:?? ? "@babel/core": "^7.10.4",wepack版本? ? "webpack": "4.30.0",

在build模式下,打包依然报错,在rules中增加babel的处理逻辑即可

module: {
    unknownContextCritical: false,
    rules: [{
        test: /\.scss$|\.css$/,
        use: [{
            loader: MiniCssExtractPlugin.loader,
            options: {
              // you can specify a publicPath here
              // by default it use publicPath in webpackOptions.output
              publicPath: "../",
            },
          },
          "css-loader",
        ],
      },

      {
        test: /\.(png|gif|jpg|jpeg|svg|xml|json)$/,
        use: ["url-loader"],
        exclude: [path.resolve("examples/static/svg")], // 去除你存放svg的那个文件夹,改用svgo-loader处理
      },

      {
        test: /\.js$/,
        loader: "babel-loader",
        exclude: [/node_modules/],

        options: {
          // plugins: ["babel-plugin-transform-remove-strict-mode"],
          presets: [
            [
              "@babel/preset-env", {
                targets: {
                  edge: "17",
                  firefox: "60",
                  chrome: "67",
                  safari: "11.1",
                  ie: "11"
                },
                useBuiltIns: 'usage'
              }
            ]
          ],

        }
      },
    ],
  },
  optimization: {

    minimize: true,
    minimizer: [
      new TerserJSPlugin({
        extractComments: false,
        parallel: true,
        cache: true,
        terserOptions: {
          ecma: undefined,
          warnings: false,
          parse: {},
          compress: {
            // drop_console: true,
            collapse_vars: true,
            reduce_vars: true,
          },
          mangle: true, // Note `mangle.properties` is `false` by default.
          module: false,
          output: {
            // 删除注释
            comments: false,
            beautify: false,
          },
          toplevel: false,
          nameCache: null,
          ie8: false,
          keep_classnames: undefined,
          keep_fnames: true,
          safari10: false,
        },
      }),
    ],
  },

以上步骤在开发和build之后都不报错,但是build之后,执行时,函数内部无法拿到函数名称

执行该句?arguments.callee.name ,发现值为value

研究之后发现是由于build打包将所有函数的名称都移除掉了,处理的是TerserJSPlugin插件,因此在build配置中更改该配置即可,参见上述代码段

? keep_fnames: true,?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-04 15:27:11  更:2022-03-04 15:28:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:10:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码