@tex620

Как трансформировать js код для старой версии node.js?

Я использую следующую конфигурацию webpack.
Babel пресет выставлен в режим совместимости с node.js 6.10

const path = require('path');
module.exports = {
    entry: './src/index.js',
    module: {
        rules: [
            {
                test: /\.(js)$/,
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: ['@babel/preset-env', {
                            targets: {
                                node: '6.10'
                            }
                        }]
                    }
                }
            }
        ]
    },
    output: {<code lang="javascript">

</code>
        path: path.resolve(__dirname, 'dist'),
        filename: 'index_bundle.js'
    },
    mode: 'production'//process.env.NODE_ENV === 'production' ? 'production' : 'development'
}


Исходный код:

const promise1 = Promise.resolve(3);
const promise2 = new Promise((resolve, reject) => setTimeout(reject, 100, 'foo'));
const promises = [promise1, promise2];

Promise.allSettled(promises).
then((results) => results.forEach((result) => console.log(result.status)));


После трансформации:
(()=>{var e=[Promise.resolve(3),new Promise((function(e,o){return setTimeout(o,100,"foo")}))];Promise.allSettled(e).then((function(e){return e.forEach((function(e){return console.log(e.status)}))}))})();

Однако после трансформации остался метод Promise.allSettled, которого нет в node версии 6.10.
Как это исправить?
  • Вопрос задан
  • 59 просмотров
Пригласить эксперта
Ответы на вопрос 1
Aetae
@Aetae Куратор тега JavaScript
Тлен
По идее preset-env должен автоматически подключить полифил для этого дела из core.js.
Вот тут говорят, что таки да должен быть в современной версии.
'@babel/preset-env', {
    useBuiltIns: 'usage',
    corejs: {version: 3, proposals: true},
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы