Почему webpack выводит с глобальным `self` вместо `this`, когда указано output.globalObject: this?

Я использую webpack-cli 4.7.0. У меня есть библиотека, которую я хотел бы скомпилировать для двух разных сред: одну для Интернета и одну для узла. Согласно этой документации, это легко достигается путем экспорта двух отдельных допустимых конфигураций webpack из webpack. конфиг.js.

Итак, я создал две действительные конфигурации веб-пакета, одну для сервера и одну для клиента. Webpack выводит два отдельных файла, как указано, но настаивает на использовании self вместо этого, хотя я указал output.globalObject: "this" в конфигурации. Если я понимаю официальную документацию, такого быть не должно.

webpack.config.js

const path = require( "path" );
// const webpack = require( "webpack" );


const serverConfig  = {
    mode: "production",
    entry: "./src/Check4.js",
    target: "node",
    output: {
        path: path.resolve( __dirname, "dist" ),
        filename: "Check4.node.js",
        globalObject: "this",
        library : {
            type: "commonjs2",
            export: "default"

        }

    }
};

const clientConfig  = {
    mode: "production",
    entry: "./src/Check4.web.js",
    target: "web",
    output: {
        path: path.resolve( __dirname, "dist" ),
        filename: "Check4.js",
        globalObject: "this",
        library : {
            name: "Check4",
            type: "window",
        }
    }
};

module.exports = [serverConfig, clientConfig];

для справки, вот первые несколько байтов, выведенных веб-пакетом, чтобы показать, что он использует глобальную личность вместо этого

(()=>{var e={172:e=>{self,e.exports=(()=>{"use strict";var e={502:...

person Native Coder    schedule 07.06.2021    source источник


Ответы (1)


Ответ был в моих зависимостях. Я написал класс, от которого зависел этот класс. Родительский класс не был скомпилирован, поэтому webpack пытался скомпилировать оба одновременно.

Через много часов я наткнулся на это, что привело меня к решению проблемы. https://github.com/markdalgleish/static-site-generator-webpack-plugin/issues/79

Эй, обнови; Немного осмотревшись, я понял, что эта ошибка возникает из-за зависимости изоморфной выборки (https://github.com/matthew-andrews/iso%E2%80%A6). Похоже, что документ не определен, какие проблемы возникают у людей, поскольку этот предварительный рендеринг не происходит в контексте браузера. У меня больше нет времени смотреть сегодня, почему это так, или искать решения, но это моя догадка. Проверьте свои полифилы и зависимости.

person Native Coder    schedule 07.06.2021