【问题标题】:How to load pure JS file using ruby gem commonjs?如何使用 ruby​​ gem commonjs 加载纯 JS 文件?
【发布时间】:2015-10-15 15:58:22
【问题描述】:

简单问题:如何从 ruby​​ 加载纯 .js 文件?

我目前的策略是从 ruby​​ 中加载 .js 文件,即使用 commonjs gem。我知道说明是加载 js 目录,然后需要 文件。不幸的是,当我尝试加载目录以尝试将 nil 转换为字符串时,我不断收到 TypeError。

这是我的文件结构:

.
├── Gemfile
├── LICENSE.md
├── README.md
├── Rakefile
├── lib
│   ├── example
│   │   ├── js
│   │   │   ├── data.json
│   │   │   ├── expressions.js
│   │   │   └── javascript_i_want_to_run.js
│   │   └── version.rb
│   └── example.rb
├── example.gemspec
├── script
└── test

commonjs instructions 之后,这是我从 pry 调用时遇到的失败(注意我加载的是 目录 而不是 文件)。

[1] pry(main)> require 'commonjs'
=> true
[2] pry(main)> env = CommonJS::Environment.new(path: 'lib/example/js')
TypeError: no implicit conversion of nil into String
from /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/commonjs-0.2.7/lib/commonjs/environment.rb:9:in `initialize'

我被难住了。有什么想法会发生什么吗?

【问题讨论】:

    标签: javascript ruby commonjs execjs


    【解决方案1】:

    自述文件有错误。 CommonJS::Environment类的initialize方法的第一个参数是runtime。应该是:

    require 'commonjs'
    require 'v8'
    
    runtime = V8::Context.new
    env = CommonJS::Environment.new(runtime, path: 'lib/example/js')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多