Javascript 无法导入react js组件
我试图将react组件导入jsx文件,但它引发以下异常: 这是我的主要代码:Javascript 无法导入react js组件,javascript,reactjs,babeljs,Javascript,Reactjs,Babeljs,我试图将react组件导入jsx文件,但它引发以下异常: 这是我的主要代码: import React, { Component } from "react"; import Sidebar from "./Sidebar"; class App extends Component{ render(){ return ( <Sidebar/> ); } } ReactDOM.render( <
import React, { Component } from "react";
import Sidebar from "./Sidebar";
class App extends Component{
render(){
return (
<Sidebar/>
);
}
}
ReactDOM.render(
<App />,
document.getElementById("root")
);
import React,{Component}来自“React”;
从“/Sidebar”导入侧栏;
类应用程序扩展组件{
render(){
返回(
);
}
}
ReactDOM.render(
我发布了一个简单的版本,据我所知,它确实有效:
/index.js:
import React from 'react';
import ReactDOM from 'react-dom';
import Application from './components/Application'
ReactDOM.render(<Application />, document.getElementById('root'));
我发布了一个简单的版本,我知道它可以工作:
/index.js:
import React from 'react';
import ReactDOM from 'react-dom';
import Application from './components/Application'
ReactDOM.render(<Application />, document.getElementById('root'));
看起来您没有在webpack.config.js中添加.jsx文件的规则
由于您同时拥有.js和.jsx文件,您需要告诉webpack加载扩展名为.js和.jsx的文件。请在规则部分的webpack.config.js中添加以下配置
{
//tell webpack to use jsx-loader for all *.jsx files
test: /\.(js|jsx)$/,
exclude: /node_modules/,
loader: "babel-loader"
}
并添加扩展,如
resolve: {
modules: [
path.resolve("./src"),
path.resolve("./node_modules")
],
extensions: [".js", ".jsx"]
}
下面是供您参考的工作webpack.config.js文件
module.exports = {
target: "web",
entry: [
"whatwg-fetch",
'webpack-dev-server/client',
'webpack/hot/only-dev-server',
'babel-polyfill',
"./src/index.js"
],
output: {
path: __dirname + 'build',
publicPath: '/',
filename: "bundle.js"
},
plugins: [new HtmlWebpackPlugin({
template: "index.html"
}),
new CompressionPlugin({
asset: "[path].gz[query]",
algorithm: "gzip",
test: /\.js$|\.jsx$|\.css$|\.html$/,
threshold: 10240,
minRatio: 0.8
}),
new webpack.HotModuleReplacementPlugin(),
// enable HMR globally
new webpack.NoEmitOnErrorsPlugin()
],
module: {
rules: [
{
//tell webpack to use jsx-loader for all *.jsx files
test: /\.(js|jsx)$/,
exclude: /node_modules/,
loader: "babel-loader"
},
{
test: /\.css$/,
loader: "style-loader!css-loader"
},
{
test: /\.(png|jpg|jpeg|gif|svg|woff|woff2)$/,
use: [
{
loader: 'file-loader',
options: {}
}
]
},
{
test: /\.(eot|ttf)$/,
loader: "file-loader",
},
{
test: /\.scss$/,
loaders: ["style-loader", "css-loader", "sass-loader"]
}
]
},
resolve: {
modules: [
path.resolve("./src"),
path.resolve("./node_modules")
],
extensions: [".js", ".jsx"]
},
devServer: {
watchOptions: {
// Needed for Windows Subsystem for Linux dev environment:
poll: true
},
contentBase: './build'
},
devtool: "cheap-module-eval-source-map",
node: {
child_process : "empty",
fs: "empty"
}
};
看起来您没有在webpack.config.js中添加.jsx文件的规则
由于您同时拥有.js和.jsx文件,您需要告诉webpack加载扩展名为.js和.jsx的文件。请在规则部分的webpack.config.js中添加以下配置
{
//tell webpack to use jsx-loader for all *.jsx files
test: /\.(js|jsx)$/,
exclude: /node_modules/,
loader: "babel-loader"
}
并添加扩展,如
resolve: {
modules: [
path.resolve("./src"),
path.resolve("./node_modules")
],
extensions: [".js", ".jsx"]
}
下面是供您参考的工作webpack.config.js文件
module.exports = {
target: "web",
entry: [
"whatwg-fetch",
'webpack-dev-server/client',
'webpack/hot/only-dev-server',
'babel-polyfill',
"./src/index.js"
],
output: {
path: __dirname + 'build',
publicPath: '/',
filename: "bundle.js"
},
plugins: [new HtmlWebpackPlugin({
template: "index.html"
}),
new CompressionPlugin({
asset: "[path].gz[query]",
algorithm: "gzip",
test: /\.js$|\.jsx$|\.css$|\.html$/,
threshold: 10240,
minRatio: 0.8
}),
new webpack.HotModuleReplacementPlugin(),
// enable HMR globally
new webpack.NoEmitOnErrorsPlugin()
],
module: {
rules: [
{
//tell webpack to use jsx-loader for all *.jsx files
test: /\.(js|jsx)$/,
exclude: /node_modules/,
loader: "babel-loader"
},
{
test: /\.css$/,
loader: "style-loader!css-loader"
},
{
test: /\.(png|jpg|jpeg|gif|svg|woff|woff2)$/,
use: [
{
loader: 'file-loader',
options: {}
}
]
},
{
test: /\.(eot|ttf)$/,
loader: "file-loader",
},
{
test: /\.scss$/,
loaders: ["style-loader", "css-loader", "sass-loader"]
}
]
},
resolve: {
modules: [
path.resolve("./src"),
path.resolve("./node_modules")
],
extensions: [".js", ".jsx"]
},
devServer: {
watchOptions: {
// Needed for Windows Subsystem for Linux dev environment:
poll: true
},
contentBase: './build'
},
devtool: "cheap-module-eval-source-map",
node: {
child_process : "empty",
fs: "empty"
}
};
请共享文件夹结构请检查侧栏组件的路径此处可能存在路径问题。SideBar.js和App.js必须是同一个目录可能从“/SideBar.jsx”导入侧栏;
将解决您的问题。您可能没有在Webpack中配置要解决的扩展请共享文件夹结构请检查侧栏组件的路径此处可能存在路径问题。SideBar.js和App.js必须是同一个目录可能从“/SideBar.jsx”导入侧栏;
将解决您的问题。您可能没有在网页中配置要解决的扩展。我尝试了,但它引发了我以前的异常。模块未找到我尝试了,但它引发了我以前的异常。模块未找到