Подтвердить что ты не робот

Неверный объект конфигурации. Webpack был инициализирован с использованием объекта конфигурации, который не соответствует схеме API

У меня есть это приложение helloworld для простого создания, созданное в онлайн-курсе, однако я получаю эту ошибку:

Неверный объект конфигурации. Webpack был инициализирован с использованием объект конфигурации, который не соответствует схеме API.  - Конфигурация имеет неизвестное свойство postcss. Эти свойства действительны: object {amd?, bail?, cache?, context?, dependencies?, devServer?, devtool?, entry, externals?, loader?, module?, name?, node?, output?, performance?, plugins?, profile?, recordsInputPath?, recordsO utputPath?, recordsPath?, разрешить?, resolveLoader?, stats?, target?, watch?, watchOptions? } Для опечаток: пожалуйста, исправьте их.
Для параметров загрузчика: webpack 2 больше не позволяет настраивать свойства в конфигурации.      Погрузчики должны быть обновлены, чтобы пропускать опции через параметры загрузчика в module.rules.      До тех пор, пока загрузчики не будут обновлены, вы можете использовать LoaderOptionsPlugin для передачи этих параметров загрузчику:      плагины: [        новый webpack.LoaderOptionsPlugin({          //test:/.xxx$/,//может применять это только для некоторых модулей          опции: {            postcss:...          }        })      ]  - configuration.resolve имеет неизвестное свойство "root". Эти свойства действительны: object {alias?, aliasFields?, cachePredicate?, descriptionFiles?, enforceExtension?, принудительно использоватьModuleExtension?, extensions?, fileSystem?, mainFields?, mainFiles?, moduleExtensions?, modules?, plugins?, resolver?, symlinks?, unsafeCache?, useSyncFileSystemCalls? }  - configuration.resolve.extensions [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'
            }
        }
    }

};
4b9b3361

Ответ 1

Я точно не знаю, в чем причина, но я решаю это так.
Переустановите весь проект, но помните, что сервер webpack-dev должен быть установлен на глобальном уровне.
Я прохожу через некоторые ошибки сервера, такие как webpack can not found, поэтому я связал Webpack с помощью команды link.
В выпуске Решение некоторых проблем с абсолютным путём.

В object: inline: false devServer object: inline: false

webpack.config.js

module.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']
                }
            }
        ]
    }

};

package.json

{
  "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"
  }
}

Ответ 2

Я решил эту проблему, удалив пустую строку из моего массива разрешений. Проверьте документацию разрешений на веб-сайт.

//Doesn't work
module.exports = {
  resolve: {
    extensions: ['', '.js', '.jsx']
  }
  ...
}; 

//Works!
module.exports = {
  resolve: {
    extensions: ['.js', '.jsx']
  }
  ...
};

Ответ 3

Просто перейдите от "загрузчиков" к "правилам" в "webpack.config.js"

Поскольку загрузчики используются в Webpack 1 и правила в Webpack2. Вы видите, что есть различия.

Ответ 4

Попробуйте выполнить следующие шаги:

npm uninstall webpack --save-dev

за которым следует

npm install [email protected] --save-dev

Затем вы снова сможете gulp. Исправлена ​​проблема для меня.

Ответ 5

Я полагаю, ваша версия веб-пакета 2.2.1. Я думаю, что вы должны использовать это руководство по миграции → https://webpack.js.org/guides/migrating/

Также вы можете использовать этот пример TypeSCript + Webpack 2.

Ответ 6

Для таких людей, как я, кто недавно начал: ключевое слово 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;

Ответ 7

Меня заменили "загрузчики" на "правила" (webpack v4)

Ответ 8

В webpack.config.js заменить загрузчики: [..] с правилами: [..] Это сработало для меня.

Ответ 9

У меня была такая же проблема, и я решил ее, установив последнюю версию npm:

npm install -g [email protected]

а затем измените файл webpack.config.js, чтобы решить

- configuration.resolve.extensions [0] не должно быть пустым.

теперь разрешить расширение должно выглядеть так:

resolve: {
    extensions: [ '.js', '.jsx']
},

затем запустите npm start.

Ответ 10

Файл конфигурации Webpack менялся с годами (вероятно, с каждым основным выпуском). Ответ на вопрос:

Почему я получаю эту ошибку

Invalid configuration object. Webpack has been initialised using a 
configuration object that does not match the API schema

потому что файл конфигурации не соответствует используемой версии веб-пакета.

В принятом ответе не указано, что этот и другие ответы ссылаются на это, но не указывается четко npm install [email protected], Просто измените с "загрузчиков" на "правила" "в" webpack.config.js " и это. Поэтому я решил дать свой ответ на этот вопрос.

Удаление и повторная установка веб-пакета или использование глобальной версии веб-пакета не решит эту проблему. Важно использовать правильную версию веб-пакета для используемого файла конфигурации.

Если эта проблема была исправлена при использовании глобальной версии, это, вероятно, означает, что ваша глобальная версия была "старой", а используемый вами формат файла webpack.config.js "старый", поэтому они совпадают, и теперь все работает. Я за то, чтобы все работало, но хочу, чтобы читатели знали, почему они работали.

Всякий раз, когда вы получаете конфигурацию веб-пакета, которая, как вы надеетесь, решит вашу проблему... спросите себя, для какой версии веб-пакета конфигурация предназначена.

Есть много хороших ресурсов для изучения веб-пакетов. Некоторые из них:

  • Официальный веб-сайт с описанием конфигурации веб-пакета, в настоящее время версия 4.x. Хотя это отличный ресурс для изучения того, как должен работать веб-пакет, не всегда лучше узнать, как 2 или 3 варианта в веб-пакете работают вместе для решения проблемы. Но это лучшее место для начала, потому что оно заставляет вас знать, какую версию веб-пакета вы используете. :-)
  • Webpack (v3?) В Примере - применяет размерный урок для изучения веб-пакета, выбора проблемы и последующего показа, как ее решить в веб-пакете. Мне нравится этот подход. К сожалению, он не преподает webpack 4, но все еще хорош.

  • Настройка Webpack4, Babel и React с нуля, пересмотренный - это специфично для React, но хорошо, если вы хотите изучить многие вещи, необходимые для создания одностраничного приложения реагирования.

  • Webpack (v3) - Запутанные части - Хорошо и охватывает много вопросов. Он датирован 10 апреля 2016 года и не распространяется на webpack4, но многие из учебных предметов действительны или полезны для изучения.

Есть много хороших ресурсов для изучения webpack4 на примере, пожалуйста, добавьте комментарии, если вы знаете других. Надеемся, что в будущих статьях веб-пакетов будут указаны используемые/объясненные версии.

Ответ 11

Он работает для меня, используя rules вместо loaders

module : {
rules : [
  {
    test : /\.jsx?/,
    include : APP_DIR,
    loader : 'babel-loader'
  }
]

}

Ответ 12

Эта ошибка обычно возникает, когда у вас конфликтующая версия (угловая js). Таким образом, веб-пакет не может запустить приложение. Вы можете просто исправить это, удалив веб-пакет и переустановив его.

npm uninstall webpack --save-dev
npm install webpack --save-dev

Перезапустите приложение, и все в порядке.

Я надеюсь, что смогу помочь кому-то. ура

Ответ 13

У меня возникло такое же сообщение об ошибке при вводе 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 с использованием веб-пакета и Babel

Ответ 14

Я изменил загрузчики на правила в файле webpack.config.js и обновил пакеты html-webpack-plugin, webpack, webpack-cli webpack-dev-server, webpack-dev-server до последней версии, после чего он работал для меня!

Ответ 15

Эта ошибка возникает, когда я использую path.resolve(), чтобы настроить параметры "запись" и "вывод". entry: path.resolve(__dirname + '/app.jsx'). Просто попробуйте entry: __dirname + '/app.jsx'

Ответ 16

Я имею ту же ошибку, что и вы.

npm удалить webpack --save-dev

&

npm install [email protected] --save-dev

решить это!

Ответ 17

Я не знаю, в чем именно ошибка. Но в моем случае я установил компонент bootstrap дважды, и его авто сгенерировал строку стиля css в angular.json.

Я удаляю линию и ее работу отлично. Поэтому прочитайте полную ошибку, чтобы противостоять причине маршрута.

Ответ 18

В моем случае проблема заключалась в названии папки, в которой содержался проект, которая имела знак "!" Все, что я сделал, это переименовал папку, и все было готово.