2011-08-14 3 views
6

Jint를 사용하여 JavaScript 파일을로드하고 싶지만 알아낼 수 없습니다. 설명서에 engine.run(file1)과 같은 작업을 수행 할 수 있지만 파일을로드하지 않는 것으로 나타났습니다. 파일 이름에 특별한 것을해야합니까? 나는 그것이 작동 Run에서 수동으로 코드를 넣으면C#에서 Jint로 JavaScript 파일을 어떻게로드합니까?

// test.js 
status = "test"; 

여기

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

내 C#의 :

여기 내 자바 스크립트 파일입니다.

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

답변

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

내가 수동으로 텍스트로 자신을 파일을로드하는 대신 여기에 언급 한 바와 같이 이름을로드하여 해결 방법을 찾을

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

System.Runtime.Serialization.SerializationException는 처리되지 않은 메시지였다 (코드 사용) = 입력 스트림은 유효한 바이너리 형식이 아닙니다. 시작 내용 (바이트)은 다음과 같습니다. 73-74-61-74-75-73-20-3D-20-22-74-65-73-74-22-3B-0D ... 소스 = mscorlib StackTrace :at System.Runtime.Serialization.Formatters.Binary.SerializationHeaderRecord.Read (__ BinaryParser 입력) at System.Runtime.Serialization.Formatters.Binary .__ BinaryParser.ReadSerializationHeaderRecord() –

+0

@ 대니얼, 확실하지 않습니다. 'Run()'은 스크립트가 실행될 것이고 파일 이름은 기대하지 않는다. 파일의 내용을 문자열 ('File.ReadAllText()')에 수동으로 읽은 다음 문자열로'Run()'을 호출 해보십시오. –

2

는 개인적으로 사용

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

작지만 잘 작동합니다.

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(); 
관련 문제