Предупреждение grunt-babel Связывание «аргументов» в строгом режиме - PullRequest
0 голосов
/ 29 февраля 2020

, когда я хочу сжать свой код javascript с помощью grunt и uglify js, но uglify js не поддерживает es6, поэтому я использую grunt-babel, но я встретил некоторые надежные аргументы Binding ', предупреждающие в строгом режиме, поэтому я пишу несколько простых тестов кода. В этом файле аргументы - это просто обычная локальная переменная, не вызывается (аргументы) или не применяется , я не понимаю, как это произошло и как это исправить. Вот пример кода:

'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']);
  }

затем извините grunt консольный журнал

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

Я пытался настроить параметры babel ["@babel/plugin-transform-modules-commonjs", { "strictMode": false }], но это не работает, как я могу это исправить? спасибо

1 Ответ

0 голосов
/ 21 апреля 2020

, как вы можете найти в этой ссылке на документацию MDN: https://developer.mozilla.org/ca/docs/Web/JavaScript/Reference/Functions/arguments

arguments - зарезервированное ключевое слово в функциях в javascript, которое при попытке определить она как внутренняя переменная в функции no не может правильно связать ее, потому что arguments - это специальный объект, содержащий все аргументы функции.

Просто изменив имя переменной на другое имя исправит вашу ошибку.

...