Kaynağa Gözat

fix(基础模块): 修复js脚本中无法使用console问题

zhouhao 2 yıl önce
ebeveyn
işleme
552dfd550b

+ 2 - 0
jetlinks-components/script-component/src/main/java/org/jetlinks/community/script/jsr223/JavaScriptFactory.java

@@ -30,6 +30,8 @@ public abstract class JavaScriptFactory extends Jsr223ScriptFactory {
                      "this.eval = function(e){};" +
                      "function readFully(){};" +
                      "function readLine(){};" +
+                     "const console=_$console;" +
+                     "const utils=_$utils;" +
                      "const print = function(e){console.log(e)};" +
                      "const echo = print;");
 

+ 2 - 2
jetlinks-components/script-component/src/main/java/org/jetlinks/community/script/jsr223/Jsr223ScriptFactory.java

@@ -42,10 +42,10 @@ public abstract class Jsr223ScriptFactory extends AbstractScriptFactory {
 
         ExecutionContext ctx = ExecutionContext.create();
 
-        ctx.setAttribute("console", new Jsr223ScriptFactory.Console(
+        ctx.setAttribute("_$console", new Jsr223ScriptFactory.Console(
                              LoggerFactory.getLogger("org.jetlinks.community.script." + script.getName())),
                          ScriptContext.ENGINE_SCOPE);
-        ctx.setAttribute("utils", getUtils(), ScriptContext.ENGINE_SCOPE);
+        ctx.setAttribute("_$utils", getUtils(), ScriptContext.ENGINE_SCOPE);
 
         ctx.setAttribute("engine", null, ScriptContext.ENGINE_SCOPE);
 

+ 12 - 0
jetlinks-components/script-component/src/test/java/org/jetlinks/community/script/JavaScriptFactoryTest.java

@@ -273,6 +273,18 @@ public abstract class JavaScriptFactoryTest {
 
     }
 
+    @Test
+    @SneakyThrows
+    void testLog() {
+        {
+            JavaScriptFactory factory = getFactory();
+
+            factory.compile(Script.of("test","console.log(123)"))
+                .call();
+
+        }
+    }
+
     public interface Api {
         int add(int a, int b);