我试图从.NET类库使用JSPool和JavaScriptEngineSwitcher.V8运行一些JavaScript,但我无法解决如何安装JavaScriptEngineSwitcher.V8。到目前为止我的代码很简单如何为JavaScriptEngineSwitcher安装引擎?
public class Renderer : IDisposable
{
private readonly JsPool _pool;
private static readonly string[] _requiredFiles = { "vendors", "app" };
public Renderer(string jsPath)
{
_pool = new JsPool(new JsPoolConfig
{
Initializer = initEngine =>
{
foreach (var file in _requiredFiles)
{
initEngine.ExecuteFile(jsPath + "\\" + file + ".js");
}
}
});
}
public string Render()
{
using (var engine = _pool.GetEngine())
{
return engine.Evaluate<string>(@"myjsFn()");
}
}
public void Dispose()
{
_pool.Dispose();
}
}
但是,这将引发由于没有发动机已注册
NullReferenceException: Object reference not set to an instance of an object.
JavaScriptEngineSwitcher.Core.JsEngineSwitcher.CreateDefaultJsEngineInstance()
我的应用程序的目标是dnx451一个NullRefException,和我指定JSPool 0.4.1和JavaScriptEngineSwitcher.V8 1.5.8在我的依赖中。我有一个很好看,但似乎无法找到任何显示注册V8引擎所需的任何代码。任何人都可以将我指向正确的方向吗?
不要再使用DNX。它现在没有意义。说.NET Framework或.NET Core。 –
仅供参考,请查看池的'GetEngine()'方法返回的对象的dispose方法。与你所期望的相反,IIRC,它*不会*将引擎返回到游泳池。你有一个独立的方法在池中调用。 – Amy
@Lex李我之所以说DNX是因为该应用程序是使用RC1编写的,我还没有机会升级它! –