[英]Hyperstack doesn't find landing page resource
Hypertext /install guide shows you how to add Hypertext to an existing Rails app. 超文本/安装指南显示了如何将超文本添加到现有的Rails应用程序。 I've got to the point where I should be able to launch the legacy app as before, but the routes to image resources can't be resolved. 我已经到了可以像以前那样启动旧版应用程序的地步,但是无法解析图像资源的路由。 I think I'm just not getting the routes set correctly, on the other hand I haven't changed anything from what the Guide says. 我想我只是没有正确设置路线,另一方面,我从指南中所讲的内容都没有改变。 This is a first pass at Hyperstack and it feels like something pretty obvious, but it isn't yielding to the simple tests I've tried so far. 这是Hyperstack的第一步,它看起来很明显,但是并没有屈服于我到目前为止尝试过的简单测试。
routes.rb
Rails.application.routes.draw do
mount Hyperstack::Engine => '/hyperstack' # this route should be first in the routes file so it always matches
/hyperstack/hyper_component.rb /hyperstack/hyper_component.rb
# app/hyperstack/hyper_component.rb
class HyperComponent
# All component classes must include Hyperstack::Component
include Hyperstack::Component
# The Observable module adds state handling
include Hyperstack::State::Observable
# The following turns on the new style param accessor
# i.e. param :foo is accessed by the foo method
param_accessor_style :accessors
end
/components/shipment.rb /components/shipment.rb
class Shipment < HyperComponent
# param :my_param
# param param_with_default: "default value"
# param :param_with_default2, default: "default value" # alternative syntax
# param :param_with_type, type: Hash
# param :array_of_hashes, type: [Hash]
# other :attributes # collects all other params into a hash
# fires :callback # creates a callback param
# access params using the param name
# fire a callback using the callback name followed by a !
# state is kept and read as normal instance variables
# but when changing state prefix the statement with `mutate`
# i.e. mutate @my_state = 12
# mutate @my_other_state[:bar] = 17
# the following are the most common lifecycle call backs,
# delete any that you are not using.
# call backs may also reference an instance method i.e. before_mount :my_method
before_mount do
# any initialization particularly of state variables goes here.
# this will execute on server (prerendering) and client.
end
after_mount do
# any client only post rendering initialization goes here.
# i.e. start timers, HTTP requests, and low level jquery operations etc.
end
before_update do
# called whenever a component will be re-rerendered
end
before_unmount do
# cleanup any thing before component is destroyed
# note timers are broadcast receivers are cleaned up
# automatically
end
render do
DIV do
'Shipment'
end
end
end
Command line from start 从命令行开始
$ bundle exec foreman start
...
ActionView::Template::Error (couldn't find file 'client_and_server-e8a2a4c02f7542e3e05c' with type 'application/javascript'
...
and later on in the command line, 然后在命令行中
/Users/john/.rvm/gems/ruby-2.6.2/gems/bootstrap-4.3.1/assets/stylesheets
16:45:00 web.1 | /Users/john/.rvm/gems/ruby-2.6.2/gems/bootstrap-4.3.1/assets/javascripts):
16:45:00 web.1 | 10:
16:45:00 web.1 | 11:
16:45:00 web.1 | 12: // search path default is public/images
16:45:00 web.1 | 13: = image_tag "Drayage-LongBeach.jpg", :size => "520x360"
16:45:00 web.1 | 14: %p
16:45:00 web.1 | 15: %p
16:45:00 web.1 | 16:
based on the fact that it can't find your packed manifest file (which was I assume working before) I suspect that you are on webpacker < 4.0. 基于它找不到您的打包清单文件的事实(我假设以前曾在此工作),我怀疑您使用的是webpacker <4.0。
Webpacker now stores bundles in /javascripts/js
rather than just /javscripts/
and hyperstack installer assumes that. Webpacker现在将捆绑软件存储在/javascripts/js
而不仅仅是/javscripts/
,而超级堆栈安装程序会假定这样做。
Keep Current Version of Webpack 保持Webpack的当前版本
Go into config/initializers/assets.rb
and you will see towards the end a line like this 进入config/initializers/assets.rb
,您将在最后看到这样的一行
Rails.application.config.assets.paths << Rails.root.join('public', 'packs', 'js').to_s
just remove , 'js'
and it will work with old webpacker. 只需删除, 'js'
,它将与旧的webpacker一起使用。
There is also a similar line in config/environments/test.rb
that needs to be modified as well for hyper-spec to work. config/environments/test.rb
中也有类似的行,也需要对其进行修改以使超规格正常工作。
Upgrade Webpack (Recommended - your going to have to do it sooner or later) 升级Webpack(推荐-您迟早要这样做)
Or you can upgrade webpacker to ~> 4.0. 或者,您可以将webpacker升级到〜> 4.0。
You will need answer "Y" to both conflicts, then you must also delete .babelrc
file if it exists, and finally run bin/webpack
您需要为两个冲突都回答“ Y”,然后还必须删除.babelrc
文件(如果存在),最后运行bin/webpack
bundle install
bundle exec rails webpacker:install
answer Y to both conflicts bundle exec rails webpacker:install
对两个冲突都 bundle exec rails webpacker:install
答案Y .babelrc
if it exists 删除.babelrc
如果存在) bin/webpack
运行bin/webpack
This should successfully upgrade webpacker to 4.x, and all should now be well. 这应该可以将webpacker成功升级到4.x,并且现在一切都应该很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.