我試圖從.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編寫的,我還沒有機會升級它! –