Estoy intentando usar Webpack con Babel para compilar activos de ES6, pero recibo el siguiente mensaje de error:
You may need an appropriate loader to handle this file type.
| import React from 'react';
| /*
| import { render } from 'react-dom'
Así es como se ve mi configuración de Webpack:
var path = require('path');
var webpack = require('webpack');
module.exports = {
entry: './index',
output: {
path: path.join(__dirname, 'dist'),
filename: 'bundle.js',
publicPath: '/dist/'
},
module: {
loaders: [
{
test: /\.jsx?$/,
loader: 'babel-loader',
exclude: /node_modules/
}
]
}
}
Aquí está el paso del middleware que utiliza Webpack:
var webpack = require('webpack');
var webpackDevMiddleware = require('webpack-dev-middleware');
var config = require('./webpack.config');
var express = require('express');
var app = express();
var port = 3000;
var compiler = webpack(config);
app.use(webpackDevMiddleware(compiler, {
noInfo: true,
publicPath: config.output.publicPath
}));
app.get('/', function(req, res) {
res.sendFile(__dirname + '/index.html');
});
app.listen(port, function(err) {
console.log('Server started on http://localhost:%s', port);
});
Todo lo que hace mi archivo index.js es importar react, pero parece que el 'babel-loader' no funciona.
Estoy usando 'babel-loader' 6.0.0.
Respuestas:
Necesita instalar el
es2015
ajuste preestablecido:y luego configurar
babel-loader
:fuente
Asegúrese de tener instalado el ajuste preestablecido de babel es2015 .
Un ejemplo de package.json devDependencies es:
Ahora configure babel-loader en la configuración de su paquete web:
agregue un archivo .babelrc a la raíz de su proyecto donde están los módulos de nodo:
Más información:
babeljs.io - usando babel con webpack
babeljs.io - documentos sobre .babelrc
react-webpack-cookbook - configurar reaccionar con webpack
fuente
Si está utilizando Webpack> 3, solo necesita instalarlo
babel-preset-env
, ya que este ajuste preestablecido corresponde a es2015, es2016 y es2017.Esto toma su configuración de mi
.babelrc
archivo:fuente
Debido a las actualizaciones y los cambios con el tiempo, la compatibilidad de la versión comienza a causar problemas con la configuración.
Su webpack.config.js debería ser así; también puede configurar cómo se atenúa.
Otra cosa a tener en cuenta es el cambio de argumentos, debe leer la documentación de babel https://babeljs.io/docs/en/presets
NB: debe asegurarse de tener el @ babel / preset-env & @ babel / preset-react anterior instalado en sus dependencias package.json
fuente
@babel/preset-react
arregló para mí.ACTUALIZACIÓN DEL EQUIPO BABEL:
Estamos muy 😸 emocionados de que esté intentando usar la sintaxis de ES2015, pero en lugar de continuar con los ajustes preestablecidos anuales, el equipo recomienda usar babel-preset-env. De forma predeterminada, tiene el mismo comportamiento que los ajustes preestablecidos anteriores para compilar ES2015 + a ES5
Si está utilizando la versión 7 de Babel , necesitará ejecutar npm install @ babel / preset-env y tener "presets": ["@ babel / preset-env"] en su
.babelrc
configuración.Esto compilará todas las funciones más recientes en el código transpilado de es5:
Prerrequisitos :
Paso 1:: npm install --save-dev @ babel / preset-env
Paso 2: para compilar
JSX
código en es5, babel proporciona un@babel/preset-react
paquete para convertir reactjsx
archivo de extensión de código comprensible del navegador nativo.Paso 3: instalación de npm --save-dev @ babel / preset-react
Paso 4: cree un
.babelrc
archivo dentro de la ruta raíz de su proyecto dondewebpack.config.js
existe.Paso 5: webpack.config.js
fuente
Al usar TypeScript:
En mi caso, utilicé la sintaxis más reciente de webpack v3.11 de su página de documentación. Acabo de copiar la configuración de cargadores de estilo y CSS de su sitio web. El código comentado (API más reciente) causa este error, ver más abajo.
La forma correcta es poner esto:
en la matriz de la propiedad loaders.
fuente
Este me lanza a dar una vuelta. Angular 7, Webpack Encontré este artículo, así que quiero dar crédito al artículo https://www.edc4it.com/blog/web/helloworld-angular2.html
Cuál es la solución: // en su archivo de componentes. use template as webpack lo tratará como plantilla de texto: require ('./ process.component.html')
para que karma lo interprete npm install agregue html-loader --save-dev {test: /.html$/, use: "html-loader"},
Espero que esto ayude a alguien
fuente