Как импортить jsx без написания расширения
Попробовал самостоятельно создать конфиг для Webpack под React без использования заготовленного шаблона create-react-app?
Хочу использовать
import { App } from './components/App';
Но возникает ошибка:
ERROR in ./src/index.jsx 4:0-39
Module not found: Error: Can't resolve './components/App' in 'C:\Github\react-redux-webpack-github-api\src'
resolve './components/App' in 'C:\Github\react-redux-webpack-github-api\src'
using description file: C:\Github\react-redux-webpack-github-api\package.json (relative path: ./src)
Field 'browser' doesn't contain a valid alias configuration
using description file: C:\Github\react-redux-webpack-github-api\package.json (relative path: ./src/components/App)
no extension
Field 'browser' doesn't contain a valid alias configuration
C:\Github\react-redux-webpack-github-api\src\components\App doesn't exist
.js
Field 'browser' doesn't contain a valid alias configuration
C:\Github\react-redux-webpack-github-api\src\components\App.js doesn't exist
jsx
Field 'browser' doesn't contain a valid alias configuration
C:\Github\react-redux-webpack-github-api\src\components\Appjsx doesn't exist
as directory
C:\Github\react-redux-webpack-github-api\src\components\App doesn't exist
webpack 5.56.0 compiled with 1 error in 502 ms
Если писать
import { App } from './components/App.jsx';
то все ок.
package.json
{
"name": "reac-redux-webpack-github-api",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "webpack-dev-server",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"@babel/core": "^7.15.5",
"@babel/preset-env": "^7.15.6",
"@babel/preset-react": "^7.14.5",
"babel-loader": "^8.2.2",
"clean-webpack-plugin": "^4.0.0",
"css-loader": "^6.3.0",
"file-loader": "^6.2.0",
"html-webpack-plugin": "^5.3.2",
"less": "^4.1.1",
"less-loader": "^10.0.1",
"style-loader": "^3.3.0",
"webpack": "^5.56.0",
"webpack-cli": "^4.8.0",
"webpack-dev-server": "^4.3.0"
},
"dependencies": {
"@babel/polyfill": "^7.12.1",
"axios": "^0.22.0",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-redux": "^7.2.5",
"react-router-dom": "^5.3.0",
"redux": "^4.1.1",
"redux-devtools-extension": "^2.13.9",
"redux-thunk": "^2.3.0"
}
}
webpack.config.js. Думал, что может дело в extensions, но не знаю, что сделать
const path = require('path');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const HTMLWebpackPlugin = require('html-webpack-plugin');
module.exports = {
mode: 'development',
entry: ['@babel/polyfill', './src/index.jsx'],
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].[hash].js',
},
devServer: {
port: 3000,
},
resolve: {
extensions: ['', '.js', '.jsx']
},
plugins: [
new HTMLWebpackPlugin({ template: './src/index.html'}),
new CleanWebpackPlugin(),
],
module: {
rules: [
{
test: /\.(css|less)$/,
use: ['style-loader', 'css-loader', 'less-loader'],
},
{
test: /\.(jpg|jpeg|png|svg)$/,
use: ['file-loader'],
},
{
test: /\.m?js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
},
},
},
{
test: /\.m?jsx$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-react', '@babel/preset-env'],
},
},
},
],
},
}