首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JINT -无法"console.log“

JINT -无法"console.log“
EN

Stack Overflow用户
提问于 2014-05-20 12:10:30
回答 1查看 1.8K关注 0票数 0

我是JINT的新手,我只是尝试做一些基本的测试来学习诀窍。我的第一次尝试只是将一些javascript存储在我的数据库中,加载它,并在一个单元测试中执行它。从本质上看就是这样..。

代码语言:javascript
复制
[Fact]
public void can_use_jint_engine() {
    using (var database = DocumentStore()) {
        using (var session = database.OpenSession()) {
            var source = session.Load<Statistic>("statistics/1");

            // join the list of strings into a single script
            var script = String.Join("\n", source.Scripting);

            // this will create the script
            // console.log("this is a test from jint.");
            // 
            var engine = new Jint.Engine();
            // attempt to execute the script
            engine.Execute(script);
        }
    }
}

它不起作用,我得到了这个错误,这对我来说是完全没有意义的,而且我找不到任何文档。

在SampleProject.Installers.Instanced.__testing_installer.can_use_jint_engine()的Jint.Engine.Execute(程序扩展程序)的Jint.Engine.Execute(String#en0#)上没有定义_testing_installer.cs:第318行

有人能帮忙澄清这件事吗?在这点上我很困惑。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-20 12:56:07

对于JavaScript,有三个实体--我们关心的是。在本例中,主机(浏览器、应用程序等)、引擎(本例中为JINT)和脚本("console.log(...)")。

JavaScript将一组函数和对象定义为语言的一部分,但控制台不是其中之一。按照惯例,浏览器定义一个控制台对象,该对象可以以您描述的方式使用。但是,由于您的应用程序不是浏览器( JINT本身不会这样做),所以您的命名空间(globals)中没有定义控制台对象。

您需要做的是添加一个在JINT中可以访问的console对象。您可以在文档中找到如何做到这一点,但这里有一个简单的示例,说明如何将日志函数添加到引擎中,以便可以从JS代码中使用它(示例取自github)。

代码语言:javascript
复制
var engine = new Engine()
        .SetValue("log", new Action<object>(Console.WriteLine))
        ;

    engine.Execute(@"
      function hello() { 
        log('Hello World');
      };

      hello();
    ");
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23759448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档