webpack 5 удаляет опциональные цепочки

Foo.js

const Foo = {
    bar: {
        test: 15,
    },
};

export default Foo;

index.js

import Foo from "./Foo";

const bar = {
    test2() {
        console.log(Foo?.bar?.test);
        console.log(Foo?.qwerty?.test);
    },
};

bar?.test1?.();
bar?.test2?.();

webpack.config.js

const path = require('path');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');

module.exports = {
    context: path.resolve(__dirname, 'src'),
    mode: 'development',
    entry: {
        'index': './index.js',
    },
    output: {
        filename: '[name].js',
        path: path.resolve(__dirname, 'dist'),
    },
    resolve: {
        extensions: ['.js'],
    },
    plugins: [
        new CleanWebpackPlugin(),
    ],
};

Собираю, запускаю, скрипт валится с ошибкой

Uncaught TypeError: Cannot read properties of undefined (reading 'test')

Потому что внутри bar все "?." заменены на "."

__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _Foo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Foo */ "./Foo.js");


const bar = {
    test2() {
        console.log(_Foo__WEBPACK_IMPORTED_MODULE_0__["default"].bar.test);
        console.log(_Foo__WEBPACK_IMPORTED_MODULE_0__["default"].qwerty.test);
    },
};

bar?.test1?.();
bar?.test2?.();

Вроде бы это происходит только при непосредственном обращении к свойствам импортируемых объектов. Как это исправить?

Версии:

"clean-webpack-plugin": "^4.0.0",
"webpack": "^5.60.0",
"webpack-cli": "^4.9.1"

Ответы (0 шт):