gpt4 book ai didi

javascript - react | Npm 包 - 如何导出 2 个组件以用作 npm 包

转载 作者:行者123 更新时间:2023-12-02 23:48:12 25 4
gpt4 key购买 nike

所以这可能是一个愚蠢的问题,但它已经困扰我一段时间了。

使用 React,我创建了两个组件(Buttons.js 和 Message.js),每个组件都有一个导出。但是,现在我希望将这两个组件用作 npm 包。我已经使用示例测试了我的组件,没有出现任何问题,然后我毫不费力地发布了我的 npm 包。但现在我尝试使用导入并渲染我的组件,我偶然发现了一个错误。

问:如何导出 2 个组件以用作 npm 包

这是我的方法:

我的包裹

Buttons.js

import React from "react";
import "./Buttons.css";

export const Button = ({ text }) => <div className="button">{text}</div>

Message.js

import React from 'react';
import "./Message.css";

export const Message = ({ type, message }) => <div className={["messageBox", type].join(" ")}>{message}</div>

index.js

export { default as Buttons } from "./Buttons";
export { default as Message } from "./Message";

Package.json

{
"name": "ui-elements",
"version": "1.0.0",
"description": "Just a test",
"main": "dist/index.js"
...
}

我的项目

import Message from "ui-elements";
import Button from "ui-elements";

export default class App extends Component {
render () {
return (
<React.Fragment>
<Button text="Log in" />
<Message type="error" message="Error, awesome..." />
</React.Fragment>
)
}
}

错误消息

Element 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.

最佳答案

在你的index.js中试试这个:

import Buttons from "./Buttons";
import Message from "./Message";

export {
Buttons,
Message
}

但我认为 ES6 模块在 Node.js 中仍处于实验阶段,因此您可能必须将其重写为旧的 module.exports 版本:

const Buttons = require("./Buttons"); // and rewrite in Buttons.js
const Message = require("./Message"); // and rewrite in Message.js
module.exports = {
Buttons,
Message
};

关于javascript - react | Npm 包 - 如何导出 2 个组件以用作 npm 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55752489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com