【问题标题】:grunt-babel warning Binding 'arguments' in strict modegrunt-babel 警告在严格模式下绑定“参数”
【发布时间】:2020-06-13 05:04:48
【问题描述】:

当我想用 grunt 和 uglifyjs 压缩我的 javascript 代码,但是 uglifyjs 不支持 es6,所以我使用 grunt-babel,但是我遇到了一些问题,它警告 Binding 'arguments' in strict mode,所以我写一些简单的代码测试它。在这个文件中,arguments 只是一个普通的局部变量,不是 call(arguments) 或 apply,我不明白它是如何发生的以及如何修复它。 这是示例代码:

'use strict';
let a = 1;
async function test() {
    return new Promise(resolve, reject => {
        let b = 1;
        let c = a + b;
        resolve(c);
    })
}

function no(arguments) {
    console.log(arguments);
}

然后是 gruntfile.js

module.exports = function(grunt) {  
  require("load-grunt-tasks")(grunt); 
  grunt.initConfig({  
      pkg: grunt.file.readJSON('package.json'),       
      clean: {
        src: 'dist/'
      },
      copy: {
        main: {
          expand: true,
          cwd: 'test',
          src: '**',
          dest: 'dist/',
        },
      },
      babel: {
          options: {
              sourceMap: false,
              presets: ["@babel/preset-env"],
              ignore: ["/node_modules","./resources/vendor/**"],
              plugins: [
                  "@babel/plugin-transform-runtime",
                  ["@babel/plugin-transform-modules-commonjs", { "strictMode": false }]
                ]
          },
          dist: {
              files: [{
                 expand:true,
                 cwd:'test/',
                 src:['**/*.js'],
                 dest:'dist/'
               }] 
          }
      },
      uglify: {  
          options: {
           mangle: true,
           comments: 'some'
          },  
          my_target: {
               files: [{
                 expand:true,
                 cwd:'dist/',
                 src:['**/*.js'],
                 dest:'dist/'
               }] 
          } 
      }
  });  

    grunt.loadNpmTasks('grunt-contrib-copy');
    grunt.loadNpmTasks('grunt-babel');
    grunt.loadNpmTasks('grunt-contrib-uglify'); 
    grunt.loadNpmTasks('grunt-usemin');

    grunt.registerTask('default', ['clean','copy','babel','uglify']);
  }

然后执行 咕噜声 控制台日志

Warning: F:\project\grunttest\test\test.js: Binding 'arguments' in strict mode (11:12)

我尝试配置 babel 选项["@babel/plugin-transform-modules-commonjs", { "strictMode": false }] 但它不起作用,我该如何解决? 谢谢

【问题讨论】:

    标签: gruntjs grunt-babel


    【解决方案1】:

    您可以在 MDN 文档的链接中找到:https://developer.mozilla.org/ca/docs/Web/JavaScript/Reference/Functions/arguments

    arguments是javascript函数中的保留关键字,当您尝试将其定义为函数no中的内部变量时,它无法正确绑定它,因为arguments是这个特殊的对象包含函数的所有参数。

    只需将变量名称更改为另一个名称即可解决您的错误。

    【讨论】:

      猜你喜欢
      • 2021-03-09
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      • 2021-07-07
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      • 2017-02-01
      相关资源
      最近更新 更多