我在rails env上有红宝石,我想从我的Rails应用程序中执行nodejs命令。
我可以在下面的脚本中执行,而且可以正常工作
require 'execjs'
context = ExecJS.compile('function double(x) { return x * 2 }')
puts context.call('double', 10)
现在我想使用一些额外的节点模块来使用。
context = ExecJS.compile('var redis = require('redis');
var client = redis.createClient();client.on('connect', function() { console.log('Redis client connected');});
function selectdb(number) { client.select(number);}')
context.call('selectdb', 1)
在require块上出现了一个错误,我们没有注入外部节点模块。
有什么方法可以在运行时代码块中注入额外的模块。
我看到了itchle-rb的一些解决方案/解决方法,但它不起作用。 请建议我是否做错了什么,或者使用其他方法使用Rails应用程序中的nodejs代码。
答案 0 :(得分:0)
您不能执行此操作,至少不能使用ExecJS
的原始实现。 (建议的替代方法是使用commonjs.rb)
检查FAQ here:
为什么我不能在ExecJS中使用CommonJS require()?
ExecJS提供了最低的公分母接口 JavaScript运行时。不管哪个JavaScript都不重要,请使用ExecJS 解释器,您的代码将在其中运行。如果要访问Node API,则可以 应该检查另一个像commonjs.rb这样的库,该库旨在提供 一致的界面。