Enquanto escrevo webpack.config.js assim
module.exports = {
entry: './index.jsx',
output: {
filename: 'bundle.js'
},
module: {
loaders: [{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: 'babel',
query: {
presets: ['es2015', 'react']
}
}]
}
};
E index.jsx
eu importo um react
móduloApp
import React from 'react';
import { render } from 'react-dom';
import App from './containers/App';
let rootElement = document.getElementById('box')
render(
<App />,
rootElement
)
Se eu App.jsx
nomeiei o módulo app em , então o webpack dirá index.jsx
não é possível encontrar o módulo App
, mas se eu nomeei o módulo app nomeado em App.js
, ele encontrará esse módulo e funcionará bem.
Então, estou confuso sobre isso. No meu webpack.config.js
, escrevi test: /\.jsx?$/
para verificar o arquivo, mas por que o named *.jsx
não pode ser encontrado?
fonte
rule
listados emmodule
...{ module: { rules: [ { test: /\.jsx?$/, resolve: { extensions: [".js", ".jsx"] }, include: ... } ] }
Adicionando à resposta acima,
A propriedade resolve é onde você deve adicionar todos os tipos de arquivo que está usando em seu aplicativo.
Suponha que você queira usar arquivos .jsx ou .es6 ; você pode incluí-los aqui e o webpack os resolverá:
Se você adicionar as extensões na propriedade resolver , poderá removê-las da instrução de importação:
Outros cenários, como se você deseja que o script de café seja detectado, você deve configurar sua propriedade de teste também como:
fonte
No interesse da legibilidade e da codificação copy-paste. Aqui está a resposta do webpack 4 do comentário do sr. Roger neste tópico.
fonte
Conforme mencionado nos comentários sobre a resposta de @max, para o webpack 4, descobri que precisava colocar isso em uma das regras que estavam listadas no módulo, assim:
fonte
Eu estava enfrentando um problema semelhante e consegui resolvê-lo usando a propriedade resolve .
Como você pode ver, usei .jsx lá, que resolveu o seguinte erro
ERROR in ./src/app.jsx Module not found: Error: Can't resolve
Para referência: https://webpack.js.org/configuration/resolve/#resolve-extensions
fonte
Verifique se bundle.js está sendo gerado sem erros (verifique o registro do executor de tarefas).
Eu estava recebendo 'não é possível localizar o módulo se o arquivo denominado jsx' devido ao erro de sintaxe em html na função de renderização do componente.
fonte