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

#node.js #webpack #compilation #global-object

Вопрос:

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

Поэтому я создал две допустимые конфигурации webpack, одну для сервера и одну для клиента. Webpack выводит два отдельных файла, как указано, но настаивает на использовании «self» вместо «this», хотя я 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];
 

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

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

Ответ №1:

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

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

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