Как я могу использовать require_relative при компиляции с Opal и последующей работе в Node?
Я совершенно новичок в Опале. Я просто проверяю, как его использовать, написав простой код Ruby в локальном файле и скомпилировав его opal -c test.rb > test.js
и затем выполнить результирующий файл JS, используя node test.js
, Это работает нормально, когда весь код, который я хочу, находится в test.rb. Если, однако, когда test.rb имеет для первой строки, require_relative 'other_file'
и other_file.rb существует в том же каталоге, что и test.rb, затем происходит сбой при выполнении с узлом. Я получаю сообщение об ошибке, которое начинается так:
/Users/huliax/projects/scratch/opaltest/test.js:5022
throw exception;
^
LoadError: can't find file: "other_file" in:
- /Users/huliax/.rvm/gems/ruby-2.5.0@car/gems/opal-0.11.0/opal
- /Users/huliax/.rvm/gems/ruby-2.5.0@car/gems/opal-0.11.0/stdlib
- /Users/huliax/.rvm/gems/ruby-2.5.0@car/gems/opal-0.11.0/lib
- /Users/huliax/.rvm/gems/ruby-2.5.0@car/gems/ast-2.3.0/lib
- /Users/huliax/.rvm/gems/ruby-2.5.0@car/gems/ast-2.3.0/lib
- /Users/huliax/.rvm/gems/ruby-2.5.0@car/gems/parser-2.3.3.1/lib
Это говорит о том, что у меня не должно быть проблем с require_relative. Я не получаю никаких ошибок во время компиляции. Я также попытался скомпилировать other_file.rb для js независимо, но это не помогло. Я могу только предположить, что я неправильно понимаю вещи. Что мне нужно сделать, чтобы заставить это работать?
В конечном счете, моя цель - попытаться использовать Opal для компиляции целой библиотеки / гем ruby (которая состоит из довольно большого количества файлов) в JavaScript.
1 ответ
Пожалуйста, используйте относительный путь с требованием относительного и включите расширение, например:
require_relative "./other_file.rb"
И затем при компиляции обязательно включите текущий каталог или общий родительский каталог между двумя файлами в путях включения, например:
opal -I. test.rb -c > test.js
(проверено на опале v0.11.0)