我正在尝试用汇总和几个CreateReact应用程序原型一个微前端架构。但是,当我在本地将我的外部应用程序链接到容器应用程序时,我遇到以下错误:
React未定义
23500 |返回/纯/反应。createElement(“div”,{^23501 | id:“container”,23502 | className:“flex-flex col h-screen”23503 |},/#PURE/React.createElement(BrowserRouter,null,/#PURE/React.createElement(标头{
我认为这是因为我们没有在每个组件/文件的顶部导入React
,因为React 17的新JSX转换允许您不必这样做。我真的希望能够构建我们的微型前端包,而不必在每个文件中导入React,有没有办法做到这一点?
这是汇总表。配置。js:
import babel from 'rollup-plugin-babel';
import commonjs from '@rollup/plugin-commonjs';
import external from 'rollup-plugin-peer-deps-external';
import postcss from 'rollup-plugin-postcss';
import resolve from '@rollup/plugin-node-resolve';
import image from '@rollup/plugin-image';
import visualizer from 'rollup-plugin-visualizer';
import includePaths from 'rollup-plugin-includepaths';
import replace from '@rollup/plugin-replace';
import pkg from './package.json';
const extensions = ['.js', '.jsx', '.ts', '.tsx'];
export default {
input: './src/App.jsx',
output: [
{
file: pkg.main,
format: 'cjs',
},
{
file: pkg.module,
format: 'esm',
},
],
plugins: [
external(),
postcss(),
resolve({
mainFields: ['module', 'main', 'jsnext:main', 'browser'],
extensions,
}),
image(),
visualizer(),
includePaths({ paths: ['./'] }),
replace({
'process.env.NODE_ENV': JSON.stringify('development'),
}),
babel({
exclude: 'node_modules/**',
plugins: [
[
'module-resolver',
{
root: ['src'],
},
],
],
presets: ['@babel/preset-react'],
}),
commonjs(),
],
};
我仍然有这个问题,但我必须指定namedExports
pluginCommonjs({
include: /node_modules/,
namedExports: {
'react/index.js': ['Component', 'PureComponent', 'Fragment', 'Children', 'createElement'],
'react/jsx-runtime': ['jsx', 'jsxs', 'Fragment'],
'react/jsx-dev-runtime': ['jsx', 'jsxs', 'jsxDEV']
}
}),
通过将{runtime:“automatic”}
添加到@babel/preset react
预设中,修复了此问题。
从预设反应运行时文档:
automatic
auto导入JSX传输到的函数<代码>经典不会自动导入任何内容。
在React帖子中也提到了新的JSX转换:
目前,旧的转换{运行时:经典}
是默认选项。要启用新转换,您可以将{运行时:自动}
作为选项传递到@Babel/plugin-transver-react-jsx或@Babel/preset-react-jsx
这里有一个例子:
{
// ...
plugins: [
// ...
babel({
// ...
presets: [
// ...
["@babel/preset-react", { runtime: "automatic" }],
]
})
]
}
在tsconfig中。json,添加以下代码
{
"compilerOptions": {
"jsx": "react-jsx",
}
}
我正在尝试rollup js来构建我的typescript项目,但我不知道如何生成定义文件,以及如何将它们自动包含在dist文件中。 有人知道怎么做吗? 这是我的汇总表。配置。js 我使用的是默认的ts配置,但对于declaration=true也是如此。 编辑: 还尝试使用Webpack: Tsconfig: 生成d.ts如下所示: 但是在我使用该包的应用程序中,它找不到生成器... 生成器未定
问题内容: 我一直在尝试进行AJAX调用,然后在检索到它之后将其添加到我的视图中。 当前代码实际上什么也没有发生。 问题答案: 您的组件名称必须以大写字母开头,因为以小写字母开头的组件会被搜索为默认DOM元素,例如。对于您的组件,情况并非如此。将其设置为大写即可。 根据文档: 当元素类型以字母开头时,它指的是诸如或的内置组件,并导致将字符串 或“ span”传递给。以大写字母开头的类型,例如,编译
我在一个ES6项目上工作,我使用rollup和babel进行传输。它工作得很好,除了当我尝试导入使用commonjs(尤其是require('something'))的npm模块时,在我的浏览器中出现错误“require is not defined”(这意味着它没有正确地将节点模块从commonjs编译到ES5)。然而,我使用了rollup plugin node resolve和rollup
本文向大家介绍javascript中定义类的方法汇总,包括了javascript中定义类的方法汇总的使用技巧和注意事项,需要的朋友参考一下 JS中定义类的方式有很多种: 1、工厂方式 调用此函数时将创建新对象,并赋予它所有的属性和方法。使用此函数可以创建2个属性完全相同的对象。当然我妹可以通过给它传递参数来改版这种方式。 现在可以通过给函数传递不同的参数来得到具有不同值的对象。 在前面
自从我开始阅读反应,我了解了JSX和巴别塔。在Babel之前,JSX转换器[React工具]用于将JFX语法转换为浏览器可理解的格式。现在巴别塔取代了它的位置。我的观点是,为什么他们更换了JFX变压器?它有什么缺点吗?
本文向大家介绍C#使用DropDownList绑定添加新数据的方法汇总,包括了C#使用DropDownList绑定添加新数据的方法汇总的使用技巧和注意事项,需要的朋友参考一下 DropDownList控件又称下拉列表框控件, 控件 列表 中的多行数 据 以隐含 的形式表 示 出 来,当用户需要选择所需列表项时,通过点击 “下三角 ”图形 展示 ,用户每次 只能选用一个 数据项。DropDownLi