Javascript 为什么我接收到无效的配置对象。是否已使用与API架构不匹配的配置对象初始化网页包?

Javascript 为什么我接收到无效的配置对象。是否已使用与API架构不匹配的配置对象初始化网页包?,javascript,ruby-on-rails,webpack,webpacker,Javascript,Ruby On Rails,Webpack,Webpacker,我正在尝试将应用程序部署到生产环境,但收到“无效的配置对象。已使用与API架构不匹配的配置对象初始化了Web包。-配置具有未知属性“resolvedModules”。这些属性有效:”我最近升级到了最新的稳定版本的webpacker for Rails 6。我相信它是Webpack4。这个错误源于我的environment.js文件——它处理了一些关于JQuery的小问题——在某些情况下无法全局工作。我想,也许这是我使用的gem规范中的一个bug。在注释掉整个environment.js文件之后,

我正在尝试将应用程序部署到生产环境,但收到“无效的配置对象。已使用与API架构不匹配的配置对象初始化了Web包。-配置具有未知属性“resolvedModules”。这些属性有效:”我最近升级到了最新的稳定版本的webpacker for Rails 6。我相信它是Webpack4。这个错误源于我的environment.js文件——它处理了一些关于JQuery的小问题——在某些情况下无法全局工作。我想,也许这是我使用的gem规范中的一个bug。在注释掉整个environment.js文件之后,它的部署没有问题。我的环境文件中没有“resolvedModules”配置对象。除非它来自“@rails/webpacker”require语句在修复部署期间收到的resolvedModules错误的同时,如何修复environment.js文件以提供JQuery和其他依赖项的Plugin?

environment.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.
网页包总体配置

package.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

替换
environment.config.set('resolve.alias',{jquery:'jquery/src/jquery'})带有:

environment.config.merge({
决心:{
别名:{
jquery:'jquery/src/jquery',
}
}
});
奇怪的是,toubpackconfig();是我需要的

更改
module.exports=environment
后,JS在其正常容量内工作

为了清楚起见,最终结果是什么

module.exports = environment.toWebpackConfig();

我还有一些未初始化但需要JQuery的已损坏的依赖项。它们在视图中失败了,我能够完全消除它们。

我在使用开发环境时没有收到错误。但是,当我重新部署时,我会在更新中发布错误。当我在项目中搜索resolvedModule时。我只在@rails/webpacker中找到结果。肯定是environment.js文件导致了问题。否则,我将毫无问题地部署。我只是不能在生产中使用jquery。然后我们可以使用更多信息,如package.json、config/webpacker.yml和production.js来复制。我将您请求的配置文件添加到我的问题正文中。
module.exports = environment.toWebpackConfig();