«Объект не поддерживает свойство или метод find» в IE11 с Babel и Webpack - PullRequest
0 голосов
/ 30 мая 2018

Я получаю странное поведение в IE11 с использованием Webpack и Babel.В настоящее время проблема возникает следующее сообщение об ошибке:

SCRIPT438: Object doesn't support property or method 'find'

Это происходит только в Internet Explorer, и, как ни странно, не происходит при локальном запуске кода, только когда онбыл опубликован.

const getColumnByName = (columns, columnName) => {   
    return columns.find((col) => col.Name === columnName);
}

Используя точки останова, я вижу, что код вызывает columns.find с пустым массивом 3 раза, прежде чем он будет передан массив объектов.Только в тот четвертый раз выдается ошибка.В консоли IE я могу запустить следующие строки кода внутри вышеуказанной функции, чтобы попытаться изолировать проблему дальше.

Array.isArray(columns)
#=> true

Array.prototype.find
#=> function (predicate) { ...

[1,2,3].find(function(el){return el === 2})
#=> 2

columns.length
#=> 17

columns.find(function(e){return true})
#=> Object doesn't support property or method 'find'

Все это очень странно для меня.

Ниже мой веб-пакет.config файл, если это помогает.

/// <binding ProjectOpened='Watch - Development' />

module.exports = {
  entry: [
    'babel-polyfill',
    './Scripts/App.js',
    ],
  output: {
    filename: 'Scripts/ReactBundle/bundle.js'
  },
  resolve: {
    extensions: ['.Webpack.js', '.web.js', '.js', '.jsx'],
    mainFields: ["main"]
  },
  module: {
      rules: [
        {
            test: /\.css$/,
            use: [ 'style-loader', 'css-loader' ]
        },
        {
            test: /\.js$/,
            exclude: /(node_modules|bower_components)/,
            loader: 'babel-loader',               
            query:
                  {
                      presets: ['react', 'es2017', 'es2015', 'stage-2'],
                      plugins: ['transform-class-properties']
                  }
        },
      ]
  },  
}

Заранее благодарен за любую помощь или вклад.

1 Ответ

0 голосов
/ 30 мая 2018

Возможно ли columns может иметь тип NodeList или что-то еще, что не содержит метод find, но содержит свойство length в определенном браузере.Можете ли вы показать нам часть, в которой вы определяете переменную columns?

Если это так, вы можете преобразовать ее в массив с Array.from(columns);.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...