Пакет Webpack не экспортирует компонент React - PullRequest
1 голос
/ 28 мая 2020

Я создаю пакет внешнего интерфейса, который будет экспортировать 1 компонент React для импорта и рендеринга других пакетов. Я пытаюсь использовать webpack для объединения моего компонента React, однако мне кажется, что мне не удается экспортировать свой компонент из пакета.

Я тестирую пакет, импортируя dist/bundle непосредственно в рассказ сборника рассказов для рендеринга.

Вот наивный пример того, что я пытаюсь сделать:

// index.js

import React from "react";

export const ComponentToExport = () => <h1>Hello World!</h1>;
// webpack.config.js

const path = require("path");

module.exports = {
  entry: "./app/index.js",

  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "bundle.js",
    libraryTarget: "umd",
  },

  module: {
    rules: [
      {
        // transpile with babel
        test: /\.(js|jsx)?$/,
        exclude: /node_modules/,
        use: {
          loader: "babel-loader",
          options: {
            presets: ["@babel/preset-env"],
          },
        },
      },
    ],
  },
};

Затем я запускаю webpack --mode development, который создает пакет, dist/bundle.js .

У меня есть история в сборнике рассказов. Я пытаюсь импортировать пакет из dist и визуализировать его:

// app.stories.js

import React from "react";
import { ComponentToExport } from "../dist/bundle.js";
console.log("ComponentToExport: ", ComponentToExport);

export default { title: "RemoteComponentExample" };

export const example = () => (<ComponentToExport />);

Я ожидаю, что история с «Hello World» будет напечатана на однако я вижу эту ошибку:

React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.

enter image description here

Также в заявлении console.log(ComponentToExport) в моей истории я получаю undefined в моих инструментах разработчика.

Я не верю, что компонент экспортируется из dist/bundle.js. Я пробовал изменить libraryTarget в конфигурации веб-пакета вместе с добавлением / удалением некоторых других параметров, но, похоже, ничего не работает.

Что нужно изменить в моей конфигурации веб-пакета, чтобы пакет правильно экспортировал ComponentToExport компонент, чтобы его можно было импортировать в другие файлы и, в конечном итоге, использовать другие пакеты?

...