vue2+jsx+webpack中 使用了@babel/core babel-loader8.3 提示React is not defined 改如何解决
时间: 2024-03-21 09:40:51 浏览: 129
如果你在 Vue 2 + JSX + Webpack 中使用了 `@babel/core` 和 `babel-loader@8.3`,并且遇到了 `React is not defined` 的问题,那么可能是因为你的 Babel 配置没有正确地设置。
要解决这个问题,请按照以下步骤操作:
1. 在项目中安装 `@vue/babel-preset-jsx`。
```
npm install @vue/babel-preset-jsx --save-dev
```
2. 在 `.babelrc` 文件中添加以下内容:
```
{
"presets": [
"@vue/app",
"@vue/babel-preset-jsx"
]
}
```
3. 在 `webpack.config.js` 文件中添加以下内容:
```
module.exports = {
// ...
module: {
rules: [
{
test: /\.jsx$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: [
['@babel/preset-env', { targets: { node: 'current' } }],
'@vue/app',
'@vue/babel-preset-jsx'
]
}
}
}
]
}
}
```
4. 在组件中使用 `import { createElement } from 'vue';` 来代替 `React.createElement`。
```
<template>
<div>
{createElement('h1', { class: 'title' }, 'Hello World')}
</div>
</template>
<script>
import { createElement } from 'vue';
export default {
name: 'MyComponent',
render() {
return (
<div>
{createElement('h1', { class: 'title' }, 'Hello World')}
</div>
);
}
}
</script>
```
通过以上步骤,你的 Vue 2 + JSX + Webpack 项目应该就能够正常运行了。
阅读全文