"Es posible que necesite un cargador adecuado para manejar este tipo de archivo" con Webpack y Babel
Estoy tratando de usar Webpack con Babel para compilar activos ES6, pero estoy recibiendo 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 de middleware que hace uso de 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 mi índice.el archivo js está importando react, pero parece que el 'babel-loader' no está funcionando.
Estoy usando 'babel-loader' 6.0.0.
4 answers
Necesitas instalar el preajuste es2015
:
npm install babel-preset-es2015
Y luego configurar babel-loader
:
{
test: /\.jsx?$/,
loader: 'babel-loader',
exclude: /node_modules/,
query: {
presets: ['es2015']
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-02 03:58:10
Asegúrese de tener instalado el es2015 babel preset.
Un ejemplo de paquete .json devDependencies es:
"devDependencies": {
"babel-core": "^6.0.20",
"babel-loader": "^6.0.1",
"babel-preset-es2015": "^6.0.15",
"babel-preset-react": "^6.0.15",
"babel-preset-stage-0": "^6.0.15",
"webpack": "^1.9.6",
"webpack-dev-middleware": "^1.2.0",
"webpack-hot-middleware": "^2.0.0"
},
Ahora configure babel-loader en su configuración de webpack:
{ test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/ }
Añádase .babelrc archivo a la raíz de su proyecto donde están los módulos de nodo:
{
"presets": ["es2015", "stage-0", "react"]
}
Más información:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-24 11:36:07
Si está utilizando Webpack > 3, solo necesita instalar babel-preset-env
, ya que este preset cuenta para es2015, es2016 y es2017.
var path = require('path');
let webpack = require("webpack");
module.exports = {
entry: {
app: './app/App.js',
vendor: ["react","react-dom"]
},
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, '../public')
},
module: {
rules: [{
test: /\.jsx?$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader?cacheDirectory=true',
}
}]
}
};
Esto recoge su configuración de mi archivo .babelrc
:
{
"presets": [
[
"env",
{
"targets": {
"browsers":["last 2 versions"],
"node":"current"
}
}
],["react"]
]
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-08 16:57:13
Cuando se usa Typescript:
En mi caso utilicé la sintaxis más reciente de webpack v3.11 desde su página de documentación Acabo de copiar la configuración de css y style loaders de su sitio web. El código comentado (API más reciente) causa este error, consulte a continuación.
module: {
loaders: [{
test: /\.ts$/,
loaders: ['ts-loader']
},
{
test: /\.css$/,
loaders: [
'style-loader',
'css-loader'
]
}
]
// ,
// rules: [{
// test: /\.css$/,
// use: [
// 'style-loader',
// 'css-loader'
// ]
// }]
}
La manera correcta es poner esto:
{
test: /\.css$/,
loaders: [
'style-loader',
'css-loader'
]
}
En la matriz de la propiedad loaders.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-14 22:42:06