Недопустимый объект конфигурации. Webpack был инициализирован с помощью объекта конфигурации, который не соответствует схеме API
У меня есть это простое приложение HelloWorld react, созданное из онлайн-курса, однако я получаю эту ошибку:
недопустимый объект конфигурации. Webpack был инициализирован с помощью
объект конфигурации, который не соответствует схеме API.
- конфигурации в разработку неизвестное свойство'. Эти свойства действительны: object { amd? залог? кэш? контекст? зависимости?,
солдат?, devtool?- вход, внешний вид?- заряжающий? модуль? имя?,
узел? выход?, спектакль? Плагины? профиль?, recordsInputPath?,
recordsO utputPath?- recordsPath?- решиться?- решающий грузчик?, статистика?,
цель?- смотреть?- сторожевые посты? } Для опечаток: пожалуйста, исправьте их.
Для параметров загрузчика: webpack 2 больше не позволяет использовать пользовательские свойства
конфигурация.
Загрузчики должны быть обновлены, чтобы разрешить передачу параметров через параметры загрузчика в модуле.правила.
Пока загрузчики не будут обновлены, можно использовать LoaderOptionsPlugin для передачи этих параметров загрузчику:
подключаемый модуль: [
новый веб-пакет.LoaderOptionsPlugin({
// испытание./ :ХХХ$/, // может применяться только для некоторых модулей
опции: {
postcss: ...
}
})
]
- конфигурация.resolve имеет неизвестное свойство 'root'. Эти свойства допустимы: object { alias?- алиасфилды?,
cachePredicate?, дескрипционные файлы?- принудительное расширение?,
enforceModuleExtension? расширения?, файловая система?- мэйнфилдс?,
мейнфайлы?, модульные расширения? модули?, Плагины ?- резольвер?,
символические ссылки?- небезопасно?, useSyncFileSystemCalls? }
- конфигурация.разрешить.расширения[0] не должны быть пустыми.
мой файл webpack:
// work with all paths in a cross-platform manner
const path = require('path');
// plugins covered below
const { ProvidePlugin } = require('webpack');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
// configure source and distribution folder paths
const srcFolder = 'src';
const distFolder = 'dist';
// merge the common configuration with the environment specific configuration
module.exports = {
// entry point for application
entry: {
'app': path.join(__dirname, srcFolder, 'ts', 'app.tsx')
},
// allows us to require modules using
// import { someExport } from './my-module';
// instead of
// import { someExport } from './my-module.ts';
// with the extensions in the list, the extension can be omitted from the
// import from path
resolve: {
// order matters, resolves left to right
extensions: ['', '.js', '.ts', '.tsx', '.json'],
// root is an absolute path to the folder containing our application
// modules
root: path.join(__dirname, srcFolder, 'ts')
},
module: {
loaders: [
// process all TypeScript files (ts and tsx) through the TypeScript
// preprocessor
{ test: /.tsx?$/,loader: 'ts-loader' },
// processes JSON files, useful for config files and mock data
{ test: /.json$/, loader: 'json' },
// transpiles global SCSS stylesheets
// loader order is executed right to left
{
test: /.scss$/,
exclude: [path.join(__dirname, srcFolder, 'ts')],
loaders: ['style', 'css', 'postcss', 'sass']
},
// process Bootstrap SCSS files
{
test: /.scss$/,
exclude: [path.join(__dirname, srcFolder, 'scss')],
loaders: ['raw', 'sass']
}
]
},
// configuration for the postcss loader which modifies CSS after
// processing
// autoprefixer plugin for postcss adds vendor specific prefixing for
// non-standard or experimental css properties
postcss: [ require('autoprefixer') ],
plugins: [
// provides Promise and fetch API for browsers which do not support
// them
new ProvidePlugin({
'Promise': 'es6-promise',
'fetch': 'imports?this=>global!exports?global.fetch!whatwg-fetch'
}),
// copies image files directly when they are changed
new CopyWebpackPlugin([{
from: path.join(srcFolder, 'images'),
to: path.join('..', 'images')
}]),
// copies the index.html file, and injects a reference to the output JS
// file, app.js
new HtmlWebpackPlugin({
template: path.join(__dirname, srcFolder, 'index.html'),
filename: path.join('..', 'index.html'),
inject: 'body',
})
],
// output file settings
// path points to web server content folder where the web server will serve
// the files from file name is the name of the files, where [name] is the
// name of each entry point
output: {
path: path.join(__dirname, distFolder, 'js'),
filename: '[name].js',
publicPath: '/js'
},
// use full source maps
// this specific setting value is required to set breakpoints in they
// TypeScript source in the web browser for development other source map
devtool: 'source-map',
// use the webpack dev server to serve up the web application
devServer: {
// files are served from this folder
contentBase: 'dist',
// support HTML5 History API for react router
historyApiFallback: true,
// listen to port 5000, change this to another port if another server
// is already listening on this port
port: 5000,
// proxy requests to the JSON server REST service
proxy: {
'/widgets': {
// server to proxy
target: 'http://0.0.0.0:3010'
}
}
}
};
14 ответов:
Я точно не знаю, что вызывает это, но я решаю это так.
Переустановите весь проект, но помните, что webpack-dev-server должен быть установлен глобально.
Я прохожу через некоторые ошибки сервера, такие как webpack не может быть найден, поэтому я связал Webpack с помощью команды link.
в выходном решении некоторых абсолютных проблем пути.в devServer
object: inline: falsewebpack.конфиг.js
.jsonmodule.exports = { entry: "./src/js/main.js", output: { path:__dirname+ '/dist/', filename: "bundle.js", publicPath: '/' }, devServer: { inline: false, contentBase: "./dist", }, module: { loaders: [ { test: /\.jsx?$/, exclude:/(node_modules|bower_components)/, loader: 'babel-loader', query: { presets: ['es2015', 'react'] } } ] } };{ "name": "react-flux-architecture-es6", "version": "1.0.0", "description": "egghead", "main": "index.js", "scripts": { "start": "webpack-dev-server" }, "repository": { "type": "git", "url": "git+https://github.com/cichy/react-flux-architecture-es6.git" }, "keywords": [ "React", "flux" ], "author": "Jarosław Cichoń", "license": "ISC", "bugs": { "url": "https://github.com/cichy/react-flux-architecture-es6/issues" }, "homepage": "https://github.com/cichy/react-flux-architecture-es6#readme", "dependencies": { "flux": "^3.1.2", "react": "^15.4.2", "react-dom": "^15.4.2", "react-router": "^3.0.2" }, "devDependencies": { "babel-core": "^6.22.1", "babel-loader": "^6.2.10", "babel-preset-es2015": "^6.22.0", "babel-preset-react": "^6.22.0" } }
Я решил эту проблему, удалив пустую строку из моего массива resolve. Проверьте разрешающую документацию на сайт webpack.
//Doesn't work module.exports = { resolve: { extensions: ['', '.js', '.jsx'] } ... }; //Works! module.exports = { resolve: { extensions: ['.js', '.jsx'] } ... };
просто измените "загрузчики" на "правила" в " webpack.конфиг.ОАО"
потому что загрузчики используются в Webpack 1, а правила в Webpack2. Вы можете видеть там есть различия.
попробуйте следующие действия:
npm uninstall webpack --save-devследовал по
npm install [email protected] --save-devтогда вы должны быть в состоянии глотать снова. Исправлена проблема для меня.
Я думаю, что ваш webpack версия 2.2.1. Я думаю, что вы должны использовать это руководство по миграции-->https://webpack.js.org/guides/migrating/
кроме того, вы можете использовать это пример TypeSCript + Webpack 2.
с уважением!
для таких людей, как я, которые недавно начали:
loadersключевое слово заменить Сrules, хотя он по-прежнему представляет понятие погрузчиков. Так что мойwebpack.config.js, для приложения React, выглядит следующим образом:var webpack = require('webpack'); var path = require('path'); var BUILD_DIR = path.resolve(__dirname, 'src/client/public'); var APP_DIR = path.resolve(__dirname, 'src/client/app'); var config = { entry: APP_DIR + '/index.jsx', output: { path: BUILD_DIR, filename: 'bundle.js' }, module : { rules : [ { test : /\.jsx?/, include : APP_DIR, loader : 'babel-loader' } ] } }; module.exports = config;
у меня была та же проблема, и я решил ее, установив последнюю версию npm:
npm install -g npm@latestа затем изменить решить
- конфигурации.разрешить.расширения[0] не должны быть пустыми.
теперь разрешить расширение должно выглядеть так:
выполнитьresolve: { extensions: [ '.js', '.jsx'] },npm start.
это работа для меня с помощью
rulesвместоloadersmodule : { rules : [ { test : /\.jsx?/, include : APP_DIR, loader : 'babel-loader' } ]}
конфигурационный файл Webpack изменился за эти годы (вероятно, с каждым крупным выпуском). Ответ на вопрос:
Почему я получаю эту ошибку
Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schemaэто потому, что файл конфигурации не соответствует версии webpack используется.
принятый ответ не указывает на это, и другие ответы намекают на это, но не заявляют об этом четко npm установить [email protected],просто переход от" загрузчиков "к" правилам "в" webpack.конфиг.ОАО" и этой. Поэтому я решаю дать свой ответ на этот вопрос.
удаление и повторная установка webpack или использование глобальной версии webpack не устранит эту проблему. важно использовать правильную версию webpack для используемого файла конфигурации.
Если эта проблема была устранена при использовании глобальной версии это, вероятно, означает, что ваш глобальная версия была "старой" и webpack.конфиг.файл JS формат, используя "старое" так они соответствуют и Виола вещи, которые сейчас работают. Я все за то, чтобы все работало, но хочу, чтобы читатели знали, почему они работали.
всякий раз, когда вы получаете конфигурацию webpack, которая, как вы надеетесь, решит вашу проблему ... спросите себя, для какой версии webpack предназначена конфигурация.
есть много хороших ресурсов для изучения webpack. Некоторые являются:
- Официальный веб-сайт Webpack, описывающий конфигурацию webpack, в настоящее время находится в версии 4.x. Хотя это отличный ресурс для поиска того, как webpack должен работать, это не всегда лучший способ узнать, как 2 или 3 варианта в webpack работают вместе, чтобы решить проблему. Но это лучшее место для начала, потому что это заставляет вас знать, какую версию webpack вы используете. : -)
Webpack (v3?) на примере - принимает укус размера подход для изучения webpack, выбирая проблему, а затем показывая, как ее решить в webpack. Мне нравится такой подход. К сожалению, это не учит webpack 4, но все еще хорошо.
настройка Webpack4, Babel и реагировать с нуля, revisited - это специфично для реагирования, но хорошо, если вы хотите узнать много вещей, которые необходимы для создания приложения react single page.
Webpack (v3) - The Запутанные Части - хорошо и охватывает много земли. Он датирован 10 апреля 2016 года и не охватывает webpack4, но многие из учебных пунктов действительны или полезны для изучения.
есть гораздо больше хороших ресурсов для изучения webpack4 на примере, пожалуйста, добавьте комментарии, если вы знаете о других. Надеюсь, в будущих статьях webpack будут указаны версии, которые используются / объясняются.
Я получил то же сообщение об ошибке при введении webpack в проект, который я создал с помощью npm init.
Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema. - configuration.output.path: The provided value "dist/assets" is not an absolute path!Я начал использовать пряжу, которая исправила проблему для меня:
brew update brew install yarn brew upgrade yarn yarn init yarn add webpack webpack-dev-server path touch webpack.config.js yarn add babel-loader babel-core babel-preset-es2015 babel-preset-react --dev yarn add html-webpack-plugin yarn startЯ нашел следующую ссылку, полезная: настройка среды React с помощью webpack и Babel
У меня та же ошибка, что и у вас.
npm uninstall webpack -- save-dev
&
npm установить [email protected] -- save-dev
решить!.
эта ошибка возникает, когда я использую путь.resolve (), чтобы настроить параметры "вход" и "выход".
entry: path.resolve(__dirname + '/app.jsx'). Просто попробуйтеentry: __dirname + '/app.jsx'
Comments