6

我想使用 Jint 加载一个 JavaScript 文件,但我似乎无法弄清楚。文档说我可以做类似的事情engine.run(file1),但它似乎没有加载任何文件。我需要对文件名做一些特别的事情吗?

这是我的 JavaScript 文件:

// test.js
status = "test";

这是我的 C#

JintEngine js = new JintEngine();
js.Run("test.js");
object result = js.Run("return status;");
Console.WriteLine(result);
Console.ReadKey();

如果我手动输入代码,Run它就可以工作。

object result = js.Run("return 2 * 21;"); // prints 42
4

5 回答 5

3

我通过自己手动将文件加载到文本中找到了一种解决方法,而不是按此处提到的名称加载它: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();
于 2011-08-14T20:00:21.263 回答
2

我个人使用:

js.Run(new StreamReader("test.js"));

紧凑,只是工作。

于 2013-05-17T20:58:06.597 回答
0

尝试

 using(FileStream fs = new FileStream("test.js", FileMode.Open))
 {
    JintEngine js = JintEngine.Load(fs);
    object result = js.Run("return status;");
    Console.WriteLine(result);
 }
于 2011-08-14T19:46:33.860 回答
0

更简洁(使用您的代码)

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();
于 2016-09-13T22:36:09.160 回答
0

语法已更改。当使用 Jint 3.0.0-beta 时,使用 Execute 方法而不是 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();
于 2021-06-23T17:00:18.943 回答