Javascript 为什么我接收到无效的配置对象。是否已使用与API架构不匹配的配置对象初始化网页包?
我正在尝试将应用程序部署到生产环境,但收到“无效的配置对象。已使用与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.jsJavascript 为什么我接收到无效的配置对象。是否已使用与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文件之后,
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();