如何在C#中使用Jint加载JavaScript文件?

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();

如果我手动输入代码到运行中,它可以工作。

object result = js.Run("return 2 * 21;"); // prints 42
5个回答

4

我发现一个解决方法,通过手动将文件加载到文本中,而不是按照这里提到的名称进行加载。

        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();

2

我个人使用:

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

紧凑而且易于使用。

0

尝试

 using(FileStream fs = new FileStream("test.js", FileMode.Open))
 {
    JintEngine js = JintEngine.Load(fs);
    object result = js.Run("return status;");
    Console.WriteLine(result);
 }

System.Runtime.Serialization.SerializationException未处理 Message=输入流不是有效的二进制格式。起始内容(以字节为单位)为:73-74-61-74-75-73-20-3D-20-22-74-65-73-74-22-3B-0D ... Source=mscorlib StackTrace: 在 System.Runtime.Serialization.Formatters.Binary.SerializationHeaderRecord.Read(__BinaryParser input) 在 System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadSerializationHeaderRecord() - Daniel X Moore
@Daniel,我不确定,但关键是Run()期望执行一个脚本而不是文件名;尝试手动将文件内容读入字符串(File.ReadAllText()),然后尝试使用该字符串调用Run() - Bala R

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();

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();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接