Webpacker 找不到应用程序
Webpacker can't find application
我正在根据 "Getting Started with Rails" 创建一个新的 rails 应用程序。应用程序在步骤 4.1 中正常启动。但是当我创建我的第一个控制器时,我有一个 webpack 错误。
我是 webpack 的新手,我有红色的所有文档,但我不明白哪里有问题或遗漏了...
- Windows 10 1903
- ruby 2.6
- rails6.0.0
- nodeJS 12.11.0
rails webpacker:install
identical config/webpacker.yml
Copying webpack core config
exist config/webpack
identical config/webpack/development.js
identical config/webpack/environment.js
identical config/webpack/production.js
identical config/webpack/test.js
Copying postcss.config.js to app root directory
identical postcss.config.js
Copying babel.config.js to app root directory
identical babel.config.js
Copying .browserslistrc to app root directory
identical .browserslistrc
The JavaScript app source directory already exists
apply C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/install/binstubs.rb
Copying binstubs
exist bin
identical bin/webpack
identical bin/webpack-dev-server
append .gitignore
Installing all JavaScript dependencies [4.0.7]
run yarn add @rails/webpacker from "."
yarn add v1.17.3
[1/4] Resolving packages...
[2/4] Fetching packages...
info fsevents@1.2.9: The platform "win32" is incompatible with this module.
info "fsevents@1.2.9" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning " > webpack-dev-server@3.8.2" has unmet peer dependency "webpack@^4.0.0".
warning "webpack-dev-server > webpack-dev-middleware@3.7.2" has unmet peer dependency "webpack@^4.0.0".
[4/4] Building fresh packages...
success Saved 1 new dependency.
info Direct dependencies
└─ @rails/webpacker@4.0.7
info All dependencies
└─ @rails/webpacker@4.0.7
Done in 4.48s.
Installing dev server for live reloading
run yarn add --dev webpack-dev-server from "."
yarn add v1.17.3
[1/4] Resolving packages...
[2/4] Fetching packages...
info fsevents@1.2.9: The platform "win32" is incompatible with this module.
info "fsevents@1.2.9" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning "webpack-dev-server > webpack-dev-middleware@3.7.2" has unmet peer dependency "webpack@^4.0.0".
warning " > webpack-dev-server@3.8.2" has unmet peer dependency "webpack@^4.0.0".
[4/4] Building fresh packages...
success Saved 1 new dependency.
info Direct dependencies
└─ webpack-dev-server@3.8.2
info All dependencies
└─ webpack-dev-server@3.8.2
Done in 4.92s.
Webpacker successfully installed �
Webpacker::Manifest::MissingEntryError in Welcome#index
Showing C:/Users/[...]/site_test/app/views/layouts/application.html.erb where line #9 raised:
Webpacker can't find application in C:/Users/[...]/site_test/public/packs/manifest.json. Possible causes:
1. You want to set webpacker.yml value of compile to true for your environment
unless you are using the `webpack -w` or the webpack-dev-server.
2. webpack has not yet re-run to reflect updates.
3. You have misconfigured Webpacker's config/webpacker.yml file.
4. Your webpack configuration is not creating a manifest.
Your manifest contains:
{
}
Extracted source (around line #9):
7
8 <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
9 <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
10 </head>
11 <body>
12
这个错误似乎是关键。
Your manifest contains:
{
}
在您的项目目录中简单地尝试 运行 yarn
命令。这应该会导致创建一个 manifest.json
文件 - 除其他外。
如果这不起作用,我在 github 上找到了 this issue,我从那里 逐字 背诵了以下可能对您有帮助的命令。这将重置所有构建的资产和 node_modules.
rm -rf node_modules
rails assets:clobber
yarn
rails assets:precompile
查看 link 了解更多信息。
感谢您的帮助。不幸的是没有任何效果。
rails assets:clobber
return “错误无法找到完整性文件” 删除 node_modules 文件夹后立即。 (在 yarn install --check-files 之后工作)。
和rails assets:precompile
return
"C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/webpack_runner.rb:23:in `exec': No such file or directory - C:\Users\[...]\site_test\node_modules\.bin/webpack (Errno::ENOENT)"
但我发现了错误:我电脑中的位置!
可能是名字问题...
我在 Rails 5.2 应用程序上收到此错误消息,我根据其自述文件中的说明添加了 Webpacker。
在尝试了一些其他的东西之后,我尝试启动 webpacker-dev-server(即使它不是必需的)只是为了看看这是否会显示更有用的错误。它做到了:
$ ./bin/webpack-dev-server
warning package.json: No license field
Another program is running on port 3035. Set a new port in for dev_server
然后我切换到另一个我有 运行 的项目,它也使用 Webpacker,并关闭它的 webpack-dev-server(只需 ctrl+c:ed 运行 服务器)。现在,当我在这个新项目中重新加载页面时,我不再收到错误消息。即使没有我 运行 手动 webpack-dev-server。
您可以在 config/webpacker.yml
部分的 dev_server:
部分更改此端口。如有必要,别忘了在 config/initializers/content_security_policy.rb
中更新它。
运行 命令
rails webpacker:install
这解决了我的问题。
我遇到了同样的错误 - 为我修复:我在 .zshrc
文件中设置了 NODE_ENV
环境变量,导致 Webpack 构建使用错误的环境配置,取消设置该环境变量为我修复了它 (unset NODE_ENV
)
就像上面 Salman 的回答一样,命令
$ rails webpacker:install
或
$ bundle exec rails webpacker:install
问题已解决。这对我来说很奇怪,因为 rails 不会自动安装 webpacker,但无论如何都会在默认布局中包含 javascript_pack_tag
。但是,如果 yarn 抱怨您的节点版本,请确保安装正确的版本并切换到它,然后 运行 再次执行上述命令。这个简单的事情花了我一个小时才弄清楚。例如:
$ nvm install 13.7
$ nvm use 13.7
$ rails webpacker:install
跳到某处。空清单。错误:Webpacker::Manifest::MissingEntryError 在 Welcome#index 我把它塞进了 public/packs/manifest。json 现在她说法语了。
{
"application.js": "/packs/js/application-9afcbb5693aa87623e69.js",
"application.js.map": "/packs/js/application-9afcbb5693aa87623e69.js.map",
"entrypoints": {
"application": {
"js": [
"/packs/js/application-9afcbb5693aa87623e69.js"
],
"js.map": [
"/packs/js/application-9afcbb5693aa87623e69.js.map"
]
}
}
}
为我解决这个问题的方法是将 nodejs 降级到稳定版本(我不小心下载了最新版本),然后重新创建新的 rails 应用程序。
这是我为未来 Rails 6.1+ 和 Ruby 2.7.1+ 用户提供的解决方案。
对我来说,这是因为我的 webpacker gem 在 Gemfile
中设置为 4.0 版本。一旦我将它升级到 5.0 版本并且 运行 bundle update
,这个错误就消失了。看起来 webpacker 在 运行 并且从未创建 public/packs
文件夹时可能一直在默默地失败。将我的 Gemfile
更改为最新版本的 Webpacker 为我解决了这个错误。
Gemfile 更改
DELETED gem 'webpacker', '~> 4.0.7'
ADDED gem 'webpacker', '~> 5.0'
我遇到这个错误的时间比我想说的要多,直到我 运行 执行了以下步骤:
首先,webpacker 在我的 Gemfile
中默认锁定为 4.0 版。我将它升级到 5.0 和 运行 bundle update
.
然后:
rm -rf node_modules
rails assets:clobber
yarn
rails assets:precompile
预编译资源时出现新错误:
yarn install v1.22.4
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.36s.
I, [2021-04-09T11:04:33.781374 #16062] INFO -- : Writing /app/public/assets/manifest-04024382391bb910584145d8113cf35ef376b55d125bb4516cebeb14ce788597.js
I, [2021-04-09T11:04:33.781915 #16062] INFO -- : Writing /app/public/assets/manifest-04024382391bb910584145d8113cf35ef376b55d125bb4516cebeb14ce788597.js.gz
Compiling...
Compilation failed:
[webpack-cli] Invalid configuration object. Webpack has been initialized using a configuration object that does not match the API schema.
所以我编辑了 config/webpack/environment.js
文件来阅读:
const { environment } = require('@rails/webpacker')
const customConfig = {
resolve: {
fallback: {
dgram: false,
fs: false,
net: false,
tls: false,
child_process: false
}
}
};
environment.config.delete('node.dgram')
environment.config.delete('node.fs')
environment.config.delete('node.net')
environment.config.delete('node.tls')
environment.config.delete('node.child_process')
environment.config.merge(customConfig);
module.exports = environment
才可以加载javascript_load_tag
。它可能不适合所有人,但希望在相同情况下可以节省其他人的时间。
我最近 运行 Rails 在标准 docker ruby 容器中发生了这种情况。结果我需要添加:
RUN apt-get update & apt-get install nodejs npm -y & npm install --global yarn
到我的 docker 文件,以便让任何超过初始 rails smoketest 屏幕的东西呈现。
我遇到了同样的问题 运行:
rails webpacker:compile
已修复
来源:https://github.com/rails/webpacker/issues/2825#issuecomment-764888322
我不知道是不是晚了,但我为此苦苦挣扎了一段时间,经过无数小时的研究,唯一的解决办法是评论第 9 行,即有效并允许您的代码的 JavaScript 标签编译但您将无法在您的应用程序(利用 javascript)中使用 运行 方法,让您回到原点。要解决此问题,请转到
"C:/Users/[...]/site_test/public"
然后寻找 packs 文件夹。如果文件夹不存在,那就是问题所在。
每当您的应用程序 运行 编译并查找与 application.html.erb 文件关联的所有可用文件时,您就有一个样式表 link 标记(application.css ) 和 javascript link 标签 (application.js) 错误是由于缺少 application.js.
解决方案:
要解决此问题,请在 ("C:/Users/[...]/site_test/public/") 中创建一个包文件夹
您的 public 文件夹和 packs 文件夹内创建一个 manifest.json 文件。即.E
your-app-name/public/packs/manifest.json
完成所有这些后,将下面的代码添加到您的 manifest.json 文件中。
{
"application.js": "/packs/js/application-e421b4aa3f716bebdab1.js",
"application.js.map": "/packs/js/application-e421b4aa3f716bebdab1.js.map",
"entrypoints": {
"application": {
"js": [
"/packs/js/application-e421b4aa3f716bebdab1.js"
],
"js.map": [
"/packs/js/application-e421b4aa3f716bebdab1.js.map"
]
}
}
}
希望这能解决问题
运行 yarn add @rails/webpacker
之后 rails webpacker:install
为我解决了这个问题。
这里的任何内容都无法为我解决。所以我删除了该应用程序并再次尝试,之后它就起作用了。好像有安装顺序。如果你不正确,它是行不通的。
更新节点 - >=12
我的版本 - 16.13.1
使用来自 git -
的 webpacker
gem 'webpacker', git: 'https://github.com/rails/webpacker.git'
将 application.js 从 app/javascript/packs 移动到 app/javascript/
停止服务器,开始
这很奇怪。但这对我有用
我能够通过 运行 解决这个问题 bundle exec rails webpacker:install
这将生成一个 manifest.json
文件
当您的环境中没有 yarn
并尝试使用 npm
时,也会发生这种情况。虽然包可以通过 npm
安装,但是 webpacker 需要 yarn
到 运行 编译任务。
我正在根据 "Getting Started with Rails" 创建一个新的 rails 应用程序。应用程序在步骤 4.1 中正常启动。但是当我创建我的第一个控制器时,我有一个 webpack 错误。
我是 webpack 的新手,我有红色的所有文档,但我不明白哪里有问题或遗漏了...
- Windows 10 1903
- ruby 2.6
- rails6.0.0
- nodeJS 12.11.0
rails webpacker:install
identical config/webpacker.yml
Copying webpack core config
exist config/webpack
identical config/webpack/development.js
identical config/webpack/environment.js
identical config/webpack/production.js
identical config/webpack/test.js
Copying postcss.config.js to app root directory
identical postcss.config.js
Copying babel.config.js to app root directory
identical babel.config.js
Copying .browserslistrc to app root directory
identical .browserslistrc
The JavaScript app source directory already exists
apply C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/install/binstubs.rb
Copying binstubs
exist bin
identical bin/webpack
identical bin/webpack-dev-server
append .gitignore
Installing all JavaScript dependencies [4.0.7]
run yarn add @rails/webpacker from "."
yarn add v1.17.3
[1/4] Resolving packages...
[2/4] Fetching packages...
info fsevents@1.2.9: The platform "win32" is incompatible with this module.
info "fsevents@1.2.9" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning " > webpack-dev-server@3.8.2" has unmet peer dependency "webpack@^4.0.0".
warning "webpack-dev-server > webpack-dev-middleware@3.7.2" has unmet peer dependency "webpack@^4.0.0".
[4/4] Building fresh packages...
success Saved 1 new dependency.
info Direct dependencies
└─ @rails/webpacker@4.0.7
info All dependencies
└─ @rails/webpacker@4.0.7
Done in 4.48s.
Installing dev server for live reloading
run yarn add --dev webpack-dev-server from "."
yarn add v1.17.3
[1/4] Resolving packages...
[2/4] Fetching packages...
info fsevents@1.2.9: The platform "win32" is incompatible with this module.
info "fsevents@1.2.9" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning "webpack-dev-server > webpack-dev-middleware@3.7.2" has unmet peer dependency "webpack@^4.0.0".
warning " > webpack-dev-server@3.8.2" has unmet peer dependency "webpack@^4.0.0".
[4/4] Building fresh packages...
success Saved 1 new dependency.
info Direct dependencies
└─ webpack-dev-server@3.8.2
info All dependencies
└─ webpack-dev-server@3.8.2
Done in 4.92s.
Webpacker successfully installed �
Webpacker::Manifest::MissingEntryError in Welcome#index
Showing C:/Users/[...]/site_test/app/views/layouts/application.html.erb where line #9 raised:
Webpacker can't find application in C:/Users/[...]/site_test/public/packs/manifest.json. Possible causes:
1. You want to set webpacker.yml value of compile to true for your environment
unless you are using the `webpack -w` or the webpack-dev-server.
2. webpack has not yet re-run to reflect updates.
3. You have misconfigured Webpacker's config/webpacker.yml file.
4. Your webpack configuration is not creating a manifest.
Your manifest contains:
{
}
Extracted source (around line #9):
7
8 <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
9 <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
10 </head>
11 <body>
12
这个错误似乎是关键。
Your manifest contains:
{
}
在您的项目目录中简单地尝试 运行 yarn
命令。这应该会导致创建一个 manifest.json
文件 - 除其他外。
如果这不起作用,我在 github 上找到了 this issue,我从那里 逐字 背诵了以下可能对您有帮助的命令。这将重置所有构建的资产和 node_modules.
rm -rf node_modules
rails assets:clobber
yarn
rails assets:precompile
查看 link 了解更多信息。
感谢您的帮助。不幸的是没有任何效果。
rails assets:clobber
return “错误无法找到完整性文件” 删除 node_modules 文件夹后立即。 (在 yarn install --check-files 之后工作)。
和rails assets:precompile
return
"C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/webpack_runner.rb:23:in `exec': No such file or directory - C:\Users\[...]\site_test\node_modules\.bin/webpack (Errno::ENOENT)"
但我发现了错误:我电脑中的位置! 可能是名字问题...
我在 Rails 5.2 应用程序上收到此错误消息,我根据其自述文件中的说明添加了 Webpacker。
在尝试了一些其他的东西之后,我尝试启动 webpacker-dev-server(即使它不是必需的)只是为了看看这是否会显示更有用的错误。它做到了:
$ ./bin/webpack-dev-server
warning package.json: No license field
Another program is running on port 3035. Set a new port in for dev_server
然后我切换到另一个我有 运行 的项目,它也使用 Webpacker,并关闭它的 webpack-dev-server(只需 ctrl+c:ed 运行 服务器)。现在,当我在这个新项目中重新加载页面时,我不再收到错误消息。即使没有我 运行 手动 webpack-dev-server。
您可以在 config/webpacker.yml
部分的 dev_server:
部分更改此端口。如有必要,别忘了在 config/initializers/content_security_policy.rb
中更新它。
运行 命令
rails webpacker:install
这解决了我的问题。
我遇到了同样的错误 - 为我修复:我在 .zshrc
文件中设置了 NODE_ENV
环境变量,导致 Webpack 构建使用错误的环境配置,取消设置该环境变量为我修复了它 (unset NODE_ENV
)
就像上面 Salman 的回答一样,命令
$ rails webpacker:install
或
$ bundle exec rails webpacker:install
问题已解决。这对我来说很奇怪,因为 rails 不会自动安装 webpacker,但无论如何都会在默认布局中包含 javascript_pack_tag
。但是,如果 yarn 抱怨您的节点版本,请确保安装正确的版本并切换到它,然后 运行 再次执行上述命令。这个简单的事情花了我一个小时才弄清楚。例如:
$ nvm install 13.7
$ nvm use 13.7
$ rails webpacker:install
跳到某处。空清单。错误:Webpacker::Manifest::MissingEntryError 在 Welcome#index 我把它塞进了 public/packs/manifest。json 现在她说法语了。
{
"application.js": "/packs/js/application-9afcbb5693aa87623e69.js",
"application.js.map": "/packs/js/application-9afcbb5693aa87623e69.js.map",
"entrypoints": {
"application": {
"js": [
"/packs/js/application-9afcbb5693aa87623e69.js"
],
"js.map": [
"/packs/js/application-9afcbb5693aa87623e69.js.map"
]
}
}
}
为我解决这个问题的方法是将 nodejs 降级到稳定版本(我不小心下载了最新版本),然后重新创建新的 rails 应用程序。
这是我为未来 Rails 6.1+ 和 Ruby 2.7.1+ 用户提供的解决方案。
对我来说,这是因为我的 webpacker gem 在 Gemfile
中设置为 4.0 版本。一旦我将它升级到 5.0 版本并且 运行 bundle update
,这个错误就消失了。看起来 webpacker 在 运行 并且从未创建 public/packs
文件夹时可能一直在默默地失败。将我的 Gemfile
更改为最新版本的 Webpacker 为我解决了这个错误。
Gemfile 更改
DELETED gem 'webpacker', '~> 4.0.7'
ADDED gem 'webpacker', '~> 5.0'
我遇到这个错误的时间比我想说的要多,直到我 运行 执行了以下步骤:
首先,webpacker 在我的 Gemfile
中默认锁定为 4.0 版。我将它升级到 5.0 和 运行 bundle update
.
然后:
rm -rf node_modules
rails assets:clobber
yarn
rails assets:precompile
预编译资源时出现新错误:
yarn install v1.22.4
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.36s.
I, [2021-04-09T11:04:33.781374 #16062] INFO -- : Writing /app/public/assets/manifest-04024382391bb910584145d8113cf35ef376b55d125bb4516cebeb14ce788597.js
I, [2021-04-09T11:04:33.781915 #16062] INFO -- : Writing /app/public/assets/manifest-04024382391bb910584145d8113cf35ef376b55d125bb4516cebeb14ce788597.js.gz
Compiling...
Compilation failed:
[webpack-cli] Invalid configuration object. Webpack has been initialized using a configuration object that does not match the API schema.
所以我编辑了 config/webpack/environment.js
文件来阅读:
const { environment } = require('@rails/webpacker')
const customConfig = {
resolve: {
fallback: {
dgram: false,
fs: false,
net: false,
tls: false,
child_process: false
}
}
};
environment.config.delete('node.dgram')
environment.config.delete('node.fs')
environment.config.delete('node.net')
environment.config.delete('node.tls')
environment.config.delete('node.child_process')
environment.config.merge(customConfig);
module.exports = environment
才可以加载javascript_load_tag
。它可能不适合所有人,但希望在相同情况下可以节省其他人的时间。
我最近 运行 Rails 在标准 docker ruby 容器中发生了这种情况。结果我需要添加:
RUN apt-get update & apt-get install nodejs npm -y & npm install --global yarn
到我的 docker 文件,以便让任何超过初始 rails smoketest 屏幕的东西呈现。
我遇到了同样的问题 运行:
rails webpacker:compile
已修复
来源:https://github.com/rails/webpacker/issues/2825#issuecomment-764888322
我不知道是不是晚了,但我为此苦苦挣扎了一段时间,经过无数小时的研究,唯一的解决办法是评论第 9 行,即有效并允许您的代码的 JavaScript 标签编译但您将无法在您的应用程序(利用 javascript)中使用 运行 方法,让您回到原点。要解决此问题,请转到
"C:/Users/[...]/site_test/public"
然后寻找 packs 文件夹。如果文件夹不存在,那就是问题所在。
每当您的应用程序 运行 编译并查找与 application.html.erb 文件关联的所有可用文件时,您就有一个样式表 link 标记(application.css ) 和 javascript link 标签 (application.js) 错误是由于缺少 application.js.
解决方案: 要解决此问题,请在 ("C:/Users/[...]/site_test/public/") 中创建一个包文件夹 您的 public 文件夹和 packs 文件夹内创建一个 manifest.json 文件。即.E
your-app-name/public/packs/manifest.json
完成所有这些后,将下面的代码添加到您的 manifest.json 文件中。
{
"application.js": "/packs/js/application-e421b4aa3f716bebdab1.js",
"application.js.map": "/packs/js/application-e421b4aa3f716bebdab1.js.map",
"entrypoints": {
"application": {
"js": [
"/packs/js/application-e421b4aa3f716bebdab1.js"
],
"js.map": [
"/packs/js/application-e421b4aa3f716bebdab1.js.map"
]
}
}
}
希望这能解决问题
运行 yarn add @rails/webpacker
之后 rails webpacker:install
为我解决了这个问题。
这里的任何内容都无法为我解决。所以我删除了该应用程序并再次尝试,之后它就起作用了。好像有安装顺序。如果你不正确,它是行不通的。
更新节点 - >=12
我的版本 - 16.13.1
使用来自 git -
的 webpackergem 'webpacker', git: 'https://github.com/rails/webpacker.git'
将 application.js 从 app/javascript/packs 移动到 app/javascript/
停止服务器,开始 这很奇怪。但这对我有用
我能够通过 运行 解决这个问题 bundle exec rails webpacker:install
这将生成一个 manifest.json
文件
当您的环境中没有 yarn
并尝试使用 npm
时,也会发生这种情况。虽然包可以通过 npm
安装,但是 webpacker 需要 yarn
到 运行 编译任务。