"Возможно, вам понадобится соответствующий загрузчик для обработки этого типа файла" с помощью Webpack и Babel
Я пытаюсь использовать Webpack с Babel для компиляции активов ES6, но я получаю следующее сообщение об ошибке:
You may need an appropriate loader to handle this file type.
| import React from 'react';
| /*
| import { render } from 'react-dom'
Вот как выглядит моя конфигурация 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/
}
]
}
}
Вот шаг промежуточного уровня, который использует 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);
});
Весь мой файл index.js делает импорт, реагируя, но похоже, что "babel-loader" не работает.
Я использую "babel-loader" 6.0.0.
Ответы
Ответ 1
Вам необходимо установить es2015
пресет:
npm install babel-preset-es2015
а затем настройте babel-loader
:
{
test: /\.jsx?$/,
loader: 'babel-loader',
exclude: /node_modules/,
query: {
presets: ['es2015']
}
}
Ответ 2
Убедитесь, что установлен es2015 babel preset.
Пример package.json devDependencies:
"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"
},
Теперь настройте babel-loader в конфигурации вашего веб-пакета:
{ test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/ }
добавьте файл .babelrc в корень вашего проекта, где модули node:
{
"presets": ["es2015", "stage-0", "react"]
}
Дополнительная информация:
Ответ 3
Если вы используете Webpack > 3, вам нужно установить только babel-preset-env
, так как этот пресет отвечает за es2015, es2016 и 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',
}
}]
}
};
Это отображает его конфигурацию из моего файла .babelrc
:
{
"presets": [
[
"env",
{
"targets": {
"browsers":["last 2 versions"],
"node":"current"
}
}
],["react"]
]
}
Ответ 4
При использовании TypScript:
В моем случае я использовал новый синтаксис webpack v3.11 со своей страницы документации. Я просто скопировал конфигурацию загрузчиков css и стиля на своем веб-сайте. Закомментированный код (новый API) вызывает эту ошибку, см. Ниже.
module: {
loaders: [{
test: /\.ts$/,
loaders: ['ts-loader']
},
{
test: /\.css$/,
loaders: [
'style-loader',
'css-loader'
]
}
]
// ,
// rules: [{
// test: /\.css$/,
// use: [
// 'style-loader',
// 'css-loader'
// ]
// }]
}
Правильный способ - это:
{
test: /\.css$/,
loaders: [
'style-loader',
'css-loader'
]
}
в массиве свойства loaders.
Ответ 5
Это бросает меня за спину. Angular 7, Webpack Я нашел эту статью, поэтому хочу отдать должное статье https://www.edc4it.com/blog/web/helloworld-angular2.html
Каково решение://в вашем файле компонента. используйте шаблон, поскольку webpack будет обрабатывать его как текстовый шаблон: require ('./process.component.html)
для кармы, чтобы интерпретировать его npm install add html-loader --save-dev {test:/.html$/, use: "html-loader"},
Надеюсь, это поможет кому-то