Как загрузить файл JavaScript с Jint в C #? - PullRequest
6 голосов
/ 14 августа 2011

Я хочу загрузить файл JavaScript, используя Jint, но я не могу понять это.В документации сказано, что я могу сделать что-то вроде 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 ]

3 голосов
/ 15 августа 2011

Я нашел обходной путь, вручную загрузив файл в текст, вместо того, чтобы загружать его по имени, как указано здесь: 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();
2 голосов
/ 18 мая 2013

Лично я использую:

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

Компакт и просто работает.

0 голосов
/ 14 сентября 2016

Еще лаконичнее (используя ваш код)

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 голосов
/ 14 августа 2011

Попробуйте

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