Estou tentando usar o Webpack com Babel para compilar recursos ES6, mas estou recebendo a seguinte mensagem de erro:
You may need an appropriate loader to handle this file type.
| import React from 'react';
| /*
| import { render } from 'react-dom'
Esta é a aparência da minha configuração do 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/
}
]
}
}
Aqui está a etapa de middleware que faz uso do 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);
});
Tudo o que meu arquivo index.js está fazendo é importar react, mas parece que o 'babel-loader' não está funcionando.
Estou usando o 'babel-loader' 6.0.0.
Respostas:
Você precisa instalar a
es2015
predefinição:e então configure
babel-loader
:fonte
Certifique-se de que possui a predefinição babel es2015 instalada.
Um exemplo de package.json devDependencies é:
Agora configure o babel-loader na configuração do seu webpack:
adicione um arquivo .babelrc à raiz do seu projeto, onde os módulos do nó são:
Mais informações:
babeljs.io - usando babel com webpack
babeljs.io - documentos em .babelrc
react-webpack-cookbook - configure react com webpack
fonte
Se estiver usando o Webpack> 3, você só precisa instalar
babel-preset-env
, uma vez que esta predefinição é para es2015, es2016 e es2017.Isso pega sua configuração do meu
.babelrc
arquivo:fonte
Devido a atualizações e alterações ao longo do tempo, a compatibilidade de versões começa a causar problemas de configuração.
Seu webpack.config.js deve ser assim, você também pode configurar como quer que você diminua o ajuste.
Outra coisa a notar é a mudança de args, você deve ler a documentação do babel https://babeljs.io/docs/en/presets
NB: você tem que ter certeza de ter o acima @ babel / preset-env & @ babel / preset-react instalado em suas dependências package.json
fonte
@babel/preset-react
corrigiu para mim.ATUALIZAÇÃO DA EQUIPE BABEL:
Estamos muito animados que você esteja tentando usar a sintaxe ES2015, mas em vez de continuar com as predefinições anuais, a equipe recomenda o uso de babel-preset-env. Por padrão, tem o mesmo comportamento das predefinições anteriores para compilar ES2015 + a ES5
Se você estiver usando o Babel versão 7, você precisará executar npm install @ babel / preset-env e ter "presets": ["@ babel / preset-env"] em sua
.babelrc
configuração.Isso irá compilar todos os recursos mais recentes para o código transpilado es5:
Pré - requisitos :
Etapa 1:: npm install --save-dev @ babel / preset-env
Passo 2: Para compilar o
JSX
código para es5, o babel fornece um@babel/preset-react
pacote para converter ojsx
arquivo de extensão react em código nativo compreensível do navegador.Etapa 3: npm install --save-dev @ babel / preset-react
Etapa 4: crie o
.babelrc
arquivo dentro do caminho do caminho raiz do seu projeto ondewebpack.config.js
existir.Etapa 5: webpack.config.js
fonte
Ao usar o texto digitado:
No meu caso, usei a sintaxe mais recente do webpack v3.11 de sua página de documentação. Acabei de copiar o css e a configuração dos carregadores de estilo de seu site. O código comentado (API mais recente) causa esse erro, veja abaixo.
A maneira certa é colocar isso:
na matriz da propriedade loaders.
fonte
Este me joga para dar uma volta. Angular 7, Webpack Achei este artigo, então quero dar crédito ao artigo https://www.edc4it.com/blog/web/helloworld-angular2.html
Qual é a solução: // em seu arquivo de componente. usar template como webpack irá tratá-lo como template de texto: require ('./ process.component.html')
para o karma interpretá-lo npm install add html-loader --save-dev {test: /.html$/, use: "html-loader"},
Espero que isso ajude alguém
fonte