我正在尝试使用 Docker 构建一个容器 rails 应用程序。在我的宝石文件中,execjs
宝石已经存在。但是,在运行服务器时,我收到以下错误
ExecJS:RuntimeUnavailable: Could not find a javascript runtime
进一步挖掘后,我发现添加宝石therubyracer
或mini_racer
可以解决问题。 但是,通过添加该内容,我得到以下错误。
Unable to load application: LoadError: Error relocating /usr/local/bundle/gems/therubyracer-0.12.3/lib/v8/init.so: __vfprintf_chk: symbol not found - /usr/local/bundle/gems/therubyracer-0.12.3/lib/v8/init.so
请帮忙
这个问题之所以提出therubyracer
是因为所有者没有积极维护宝石。
当移动到ruby:2.6.5-slim
docker 映像时,我也遇到了同样的问题ruby:2.6.5-alpine
。经过几个小时的谷歌搜索,我找到了解决它的解决方案。
安装 nodejs
并python v2.7
软件包,并在 Gemfile
中添加 gem gem 'libv8-alpine', '~> 6.7', '>= 6.7.288.46.1'
并从宝石文件中删除gem 'therubyracer'
。
围栏:
libv8-alpine
在此处输入链接说明
升级execjs
gem。
在现代Mac上,JSC生活在一个不同的地方。我在运行Big Sur的新M1 Mac mini上设置我们的Rails应用程序时收到此错误消息。
升级到execjs
2.8.0+为我解决了这个问题:
Gemfile
gem "execjs", "2.8.1"
您可以在此处查看合并提交:
https://github.com/rails/execjs/pull/98