Reputation: 15060
I want to load a JavaScript file using Jint, but I can't seem to figure it out. The documentation said I could do something like engine.run(file1)
, but it doesn't appear to be loading any files. Do I need to do something special with the file name?
Here's my JavaScript file:
// test.js
status = "test";
Here's my C#
JintEngine js = new JintEngine();
js.Run("test.js");
object result = js.Run("return status;");
Console.WriteLine(result);
Console.ReadKey();
If I put in code manually in Run
it works.
object result = js.Run("return 2 * 21;"); // prints 42
Upvotes: 7
Views: 7082
Reputation: 73
The syntax has changed. When using Jint 3.0.0-beta use the Execute method instead of Run.
StreamReader streamReader = new StreamReader("test.js");
string script = streamReader.ReadToEnd();
streamReader.Close();
Engine js = new Engine();
js.Execute(script);
object result = js.Execute("return status;");
Console.WriteLine(result);
Console.ReadKey();
Upvotes: 0
Reputation: 1260
Even more succinctly (using your code)
JintEngine js = new JintEngine();
string jstr = System.IO.File.ReadAllText(test.js);
js.Run(jstr);
object result = js.Run("return status;");
Console.WriteLine(result);
Console.ReadKey();
Upvotes: 1
Reputation: 667
Personally I use:
js.Run(new StreamReader("test.js"));
Compact and just works.
Upvotes: 2
Reputation: 15060
I found a workaround by manually loading the file into text myself, instead of loading it by name as mentioned here: http://jint.codeplex.com/discussions/265939
StreamReader streamReader = new StreamReader("test.js");
string script = streamReader.ReadToEnd();
streamReader.Close();
JintEngine js = new JintEngine();
js.Run(script);
object result = js.Run("return status;");
Console.WriteLine(result);
Console.ReadKey();
Upvotes: 4
Reputation: 108957
Try
using(FileStream fs = new FileStream("test.js", FileMode.Open))
{
JintEngine js = JintEngine.Load(fs);
object result = js.Run("return status;");
Console.WriteLine(result);
}
Upvotes: 0