[英]"Add @babel/preset-react ..." error after importing from a react library
我制作了一个 create-react-app。 现在我正在尝试将一些 react 组件重构为一个名为“myLibrary”(由 create-react-library 启动)的私有库,该库位于一个名为“myLibrary”的文件夹中,位于“myApp”旁边。 “myLibrary”旨在成为独立、可重用的反应组件(通常每个文件一个文件)、css 和其他 web 资产的集合。
“我的图书馆”的 package.json
{
"name": "myLibrary",
"private": true,
"main": "dist/index.js",
"source": "src/index.js",
"type": "module",
"exports": {
"./": "./src/"
},
...
package.json 用于“myApp”
{
"name": "myApp",
"dependencies": {
"myLibrary": "file:../myLibrary",
...
现在,在“myApp”中,我尝试导入一个反应组件
import BaseLayout from 'myLibrary/layout/base'
但我收到以下错误:
ERROR in ../myLibrary/src/layout/base.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
SyntaxError: /myLibrary/src/layout/base.js: Support for the experimental syntax 'jsx' isn't currently enabled (9:7):
7 | render(){
8 | return (
> 9 | <>
| ^
10 | <Header />
11 | <main>
12 | </main>
Add @babel/preset-react (https://github.com/babel/babel/tree/main/packages/babel-preset-react) to the 'presets' section of your Babel config to enable transformation.
If you want to leave it as-is, add @babel/plugin-syntax-jsx (https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-jsx) to the 'plugins' section to enable parsing.
我将 a.babelrc 添加到“myApp”
{
"presets": ["@babel/preset-react", "@babel/preset-env"],
"plugins": ["@babel/plugin-transform-react-jsx"]
}
由于这是一个 create-react-app,我尝试了 react-app-rewired/customize-cra 以及弹出到 use.babelrc。 在确认.babelrc 已加载后,我仍然得到同样的错误。 我也尝试了以下方法,但仍然遇到同样的问题:
“我的图书馆”的 src/index.js
import BaseLayout from './layout/base.js'
export { BaseLayout }
在“我的应用程序”中
import BaseLayout from 'myLibrary'
到底是怎么回事?
检查node_modules/react-scripts/config/webpack.config.js
并寻找
// @remove-on-eject-begin
babelrc: false,
configFile: false,
然后设置babelrc: true
,以使.babelrc
文件更改生效
注意:您必须将.babelrc.json
放在“MyApp”的 src 文件夹中(与package.json
相同的文件夹
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.