ruby-on-rails Rails 6服务器刚刚停止编译webpack

yquaqz18  于 2022-11-19  发布在  Ruby
关注(0)|答案(6)|浏览(180)

我有一个非常奇怪的事情发生。
我在我的开发环境中处理这个项目,
它将在第一次浏览器请求时编译webpack。
现在,突然之间,这一切都没有发生,导致所有的javascript和风格失败,应用程序无法正常渲染。
Rails服务器控制台甚至不显示[Webpacker]正在编译...行
如果我自己启动webpack-dev-server,它可以工作,但是由于某种原因,rails服务器停止了它自己的工作。我修改了webpack_compile_output行:在webpacker.yml中将false设置为true,但是Rails服务器仍然不显示与Webpack有关的任何内容。
这真的很奇怪。我没有添加任何gem或更新任何版本的节点或webpack。我确实在我的机器上全局更新了Git从版本1.9到版本2.24,但仅此而已。
有什么想法吗?
更新:(根据要求,这里是我的config/wenpacker.yml的内容

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: true

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

  # 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:
    - .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: false
   # 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: false
    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
uyhoqukh

uyhoqukh1#

  • 通常 * 在运行rails s时,您会看到如下所示的内容:
Started GET "/react_test/hello" for ::1 at 2020-05-15 16:54:29 -0700

Processing by ReactTestController#hello as HTML
  Rendering react_test/hello.html.erb within layouts/application

[Webpacker] Everything's up-to-date. Nothing to do

如果您对Webpack资源中的js(或css/scss)进行了更改:

Processing by ReactTestController#hello as HTML
  Rendering react_test/hello.html.erb within layouts/application
[Webpacker] Compiling...
[Webpacker] Compiled all packs in /Users/foo/public/packs
[Webpacker] Hash: 1ea802b336ed3c771c61
Version: webpack 4.43.0
Time: 4844ms

... truncated for brevity (a list of assets, size, etc)

到某个时候,所有这些操作都会停止-您将“不得不”手动运行**rails s * 和 * ./bin/webpack-dev-server**。到目前为止,我注意到的是,当您运行webpack-dev-server时(例如,更新config/webpacker.yml时),会触发此操作-它确实在该文件本身的注解中说明了这一点:
# Note: You must restart bin/webpack-dev-server for changes to take effect
请尝试以下 * 解决方法 *:
1.停止Rails serverwebpack-dev-server

  • /app/javascript/packs/application.js文件进行一些(临时)更改
  • 例如,注解掉导入://import 'bootstrap'
  • 重新启动rails s,* 不 * webpack-dev-server
  • 这将出错-因为它缺少注解掉的内容(在本例中为bootstrap
  • 撤消/取消注解临时更改
  • 重新加载页面-希望它应该是好的(Webpack编译等)。

我认为(猜测)是某个缓存/同步问题,通过对application.js进行一些更改,该问题已“修复/(重置?)”
这......

uttx8gqw

uttx8gqw2#

如果webpacker停止响应application.scss或application.js中的更改,请在终端中运行以下命令:

rails webpacker:install
oyjwcjzk

oyjwcjzk3#

我今天遇到了这个问题,在阅读了这个问题并做了一些额外的调试之后,我意识到Rails Webpacker失败了,因为我有另一个项目已经在运行Webpacker,这混淆了Rails版本。
关闭另一个Webpacker并重新启动Rails服务器立即修复了这个问题。

irlmq6kh

irlmq6kh4#

当我试图刺激反射时,这让我抓狂。这对我很有效(虽然后来有另一个刺激反射问题与ActionCable connection is not open!之后,这是进步。
1.在终端中执行rails dev:cache,这可能会禁用缓存
1.运行rails server
1.此后,在终端中重新运行rails dev:cache(关闭Rails服务器后)。
environments/development.rb中,相关配置为:

config.action_controller.perform_caching = true
  config.action_controller.enable_fragment_cache_logging = true

  config.cache_store = :memory_store
  config.public_file_server.headers = {
    'Cache-Control' => "public, max-age=#{2.days.to_i}",
  }
6ioyuze2

6ioyuze25#

我的例子是我使用nvm更改了我的node版本。当一切都停止编译时,我忘记了切换版本只是卸载了yarn,这是正常的,因为我使用的是另一个node/npm映像,而且yarn是由npm全局安装的...所以:
1.运行bin/rails webpacker:install,它会说:“未安装Yarn。请从https://yarnpkg.com/lang/en/docs/install/ Exiting下载并安装Yarn!”
1.使用npm i -g yarn重新安装Yarn
1.运行您喜欢的bin/rails s命令,就完成了🎉

注意:你会再次看到[Webpacker]在你的终端做它的工作

vlju58qv

vlju58qv6#

我有一个带webpacker编译的isse没有在测试环境中运行,我已经有一段时间没有接触过这个项目了。bundle update webpacker解决了这个问题。奇怪的是,恢复到旧的Gemfile.lock现在也可以工作,所以我不知道到底是什么问题。

相关问题