Почему я получаю неверный объект конфигурации. Webpack был инициализирован с использованием объекта конфигурации, который не соответствует схеме API? - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь развернуть свое приложение в рабочей среде, но я получаю " Недопустимый объект конфигурации. Webpack был инициализирован с использованием объекта конфигурации, который не соответствует схеме API. - У конфигурации есть неизвестное свойство 'resolvedModules' Эти свойства действительны:"Я недавно обновился до последней стабильной сборки веб-упаковщика для Rails 6. Я считаю, что его веб-упаковщик 4. Эта ошибка проистекает из моей среды. Файл js - он работал с некоторыми незначительными проблемами относительно JQuery - который не работал глобально в некоторых случаях. Я думал, что, возможно, это была ошибка в gem spe c, которую я использовал. После закомментирования всего файла среды. js он был развернут без проблем. В моем файле среды нет объекта конфигурации 'resolvedModules'. Если это не из "@ rails / webpacker", требуется утверждение. Как я могу исправить свою среду. Файл js в ProvidePlugin для JQuery и другие мои зависимости, исправляя ошибку resolvedModules, полученную во время развертывания?

среда. js

const {environment} = require('@rails/webpacker');
const webpack = require('webpack')'

environment.plugins.prepend('Provide',
     new webpack.ProvidePlugin({
      $: 'jquery',
      jQuery: 'jquery',
      moment: 'moment'
  }));

environment.config.set('resolve.alias', {jquery: 'jquery/src/jquery'});
module.exports = environment;

ОБНОВЛЕНИЕ

При развертывании с новыми изменениями я получаю приведенную ниже ошибку?

DEBUG [4763131a]   Compilation failed:
Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.
 - configuration has an unknown property 'resolvedModules'. These properties are valid:
   object { amd?, bail?, cache?, context?, dependencies?, devServer?, devtool?, entry?, externals?, infrastructureLogging?, loader?, mode?, module?, name?, node?, optimization?, output?, parallelism?, performance?, plugins?, profile?, recordsInputPath?, recordsOutputPath?, recordsPath?, resolve?, resolveLoader?, serve?, stats?, target?, watch?, watchOptions? }
   For typos: please correct them.
   For loader options: webpack >= v2.0.0 no longer allows custom properties in configuration.
     Loaders should be updated to allow passing options via loader options in module.rules.
     Until loaders are updated one can use the LoaderOptionsPlugin to pass these options to the loader:
     plugins: [
       new webpack.LoaderOptionsPlugin({
         // test: /\.xxx$/, // may apply this only for some modules
         options: {
           resolvedModules: …
         }
       })
     ]
 - configuration.plugins[0] misses the property 'apply'.
   function
   -> The run point of the plugin, required method.
 - configuration.plugins[1] misses the property 'apply'.
   function
   -> The run point of the plugin, required method.
 - configuration.plugins[2] misses the property 'apply'.
   function
   -> The run point of the plugin, required method.
 - configuration.plugins[3] misses the property 'apply'.
   function
   -> The run point of the plugin, required method.
 - configuration.plugins[4] misses the property 'apply'.
   function
   -> The run point of the plugin, required method.
 - configuration.plugins[5] misses the property 'apply'.
   function
   -> The run point of the plugin, required method.
 - configuration.plugins[6] misses the property 'apply'.
   function
   -> The run point of the plugin, required method.
 - configuration.plugins[7] misses the property 'apply'.
   function
   -> The run point of the plugin, required method.

Общая конфигурация webpack

упаковка. json

{
  "name": "sample_app",
  "private": true,
  "dependencies": {
    "@client-side-validations/client-side-validations": "^0.1.1",
    "@client-side-validations/simple-form": "^0.1.1",
    "@fortawesome/fontawesome-free": "^5.12.1",
    "@rails/actioncable": "^6.0.0-alpha",
    "@rails/activestorage": "^6.0.0-alpha",
    "@rails/webpacker": "^5.0.0",
    "@yaireo/tagify": "yaireo/tagify",
    "active_storage_drag_and_drop": "^0.4.1",
    "chart.js": "^2.9.3",
    "chartkick": "^3.2.0",
    "cocoon": "github:nathanvda/cocoon#c24ba53",
    "flow-webpack-plugin": "^1.2.0",
    "jquery": "^3.4.1",
    "jquery-ujs": "latest",
    "moment": "^2.24.0",
    "owl.carousel": "^2.3.4",
    "stimulus": "^1.1.1",
    "webpack": "^4.42.1"
  },
  "version": "0.1.0",
  "devDependencies": {
    "webpack-dev-server": "^3.9.0"
  }
}

webpacker.yml

# Note: You must restart bin/webpack-dev-server for changes to take effect

default: &default
  source_path: app/javascript
  source_entry_path: packs
  public_root_path: public
  public_output_path: packs
  cache_path: tmp/cache/webpacker
  check_yarn_integrity: false
  webpack_compile_output: false

  # Additional paths webpack should lookup modules
  # ['app/assets', 'engine/foo/app/assets']
  resolved_paths: ['app/assets']

  # Reload manifest.json on all requests so we reload latest compiled packs
  cache_manifest: false

  # Extract and emit a css file
  extract_css: false

  static_assets_extensions:
    - .jpg
    - .jpeg
    - .png
    - .gif
    - .tiff
    - .ico
    - .svg
    - .eot
    - .otf
    - .ttf
    - .woff
    - .woff2

  extensions:
    - .erb
    - .mjs
    - .js
    - .sass
    - .scss
    - .css
    - .module.sass
    - .module.scss
    - .module.css
    - .png
    - .svg
    - .gif
    - .jpeg
    - .jpg

development:
  <<: *default
  compile: true

  # Verifies that correct packages and versions are installed by inspecting package.json, yarn.lock, and node_modules
  check_yarn_integrity: true

  # Reference: https://webpack.js.org/configuration/dev-server/
  dev_server:
    https: false
    host: localhost
    port: 3035
    public: localhost:3035
    hmr: false
    # Inline should be set to true if using HMR
    inline: true
    overlay: true
    compress: true
    disable_host_check: true
    use_local_ip: false
    quiet: false
    headers:
      'Access-Control-Allow-Origin': '*'
    watch_options:
      ignored: '**/node_modules/**'


test:
  <<: *default
  compile: true

  # Compile test packs to a separate directory
  public_output_path: packs-test

production:
  <<: *default

  # Production depends on precompilation of packs prior to booting for performance.
  compile: false

  # Extract and emit a css file
  extract_css: true

  # Cache manifest.json for performance
  cache_manifest: true

производство. js

process.env.NODE_ENV = process.env.NODE_ENV || 'production';

const environment = require('./environment');

module.exports = environment;

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Как ни странно, toWebpackConfig (); мне потребовалось

После изменения module.exports = environment JS работал в пределах своей нормальной емкости.

окончательный результат для ясности

module.exports = environment.toWebpackConfig();

I также было несколько сломанных зависимостей, которые не были инициализированы, но требовали JQuery. Они потерпели неудачу в поле зрения, и я смог полностью их устранить.

0 голосов
/ 25 марта 2020

Заменить environment.config.set('resolve.alias', {jquery: 'jquery/src/jquery'}); на:

environment.config.merge({
  resolve: {
    alias: {
      jquery: 'jquery/src/jquery',
    }
  }
});
...