问题标签 [duktape]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
49 浏览

c++ - 关于 Javascript 引擎错误的问题

我有一个关于 Javascript 引擎错误的问题。这可能是一个非常具体的问题,以前有没有人看到过这个错误?请你帮忙看看好吗?

这是错误消息:

这是我构建的内容/方式:

这段源代码抱怨:

0 投票
0 回答
176 浏览

javascript - 使用 Babel *from vanilla js* 将如何使用已翻译成 vanilla JS 的 ES6 模块

所以我正在编写一个使用多个文件和依赖项的 ES6 应用程序。我使用 webpack 将其捆绑到单个 bundle.js 中。从这里我想通过 Babel 运行它以在 VM (Duktape) 中获取 ES5 JS。从这里我可以成功运行 JS,但是我想通过在末尾附加额外的 JS 来实际实例化我最初创建的类这个生成的 ES5 代码。

通常,我的最终输出文件 built.js 可能需要像这样:

然后我会像这样使用它:

但是,我需要从同一个 JS 字符串访问 MyLib,而不是使用 require 或 import。Babelfied 输出没有有意义的名称或任何简单地在 vanilla JS 中实例化“类”的方式。我将如何使用附加到此文件末尾的 ES5 模块?

0 投票
1 回答
431 浏览

javascript - 如何在 Duktape 中使用 typescript 模块

我正在尝试在游戏引擎中使用 JS 作为脚本语言,TypeScript 位于顶部。作为运行时,我使用Duktape。我是一个关于 JavaScript 的完全菜鸟,目前我正试图围绕我如何启用一个工作流来让人们可以#include(需要等)其他文件。

出于测试目的,我从两个简单的 TypeScript 文件开始:

巴茨

现在我通过 TypeScript 的 Transpile 函数(来自 typescriptServices.js)得到:

Foo.js

酒吧.js

然后我想通过 Duktape 执行 Bar.js。我读了这篇文章,所以我的理解是有多种方法可以使包含其他文件工作,但这个似乎专门使“require”函数工作,所以这听起来很适合 TypeScript 为我生成的 JS 代码。因此,我创建了一个 Duktape 上下文,在其上调用 duk_module_duktape_init 并注册了一个“modSearch”函数等。但在它实际到达 Bar.js 的“require”部分之前,Duktape 已经失败并显示消息“ReferenceError:标识符”出口未定义”

如前所述,我对 JS 和 TS 真的很陌生,可能对整个工作有错误的想法,所以请随意提出完全不同的方法。我所关心的是用户可以将代码拆分为多个文件,并以某种方式引用这些文件,以便 VS Code 等工具可以找出这些引用并提供它们的功能来开发代码。我不在乎我最终是使用“require”还是“import”,以及我是否可以使用所有 TS 功能或只是一些子集。

长话短说,我做错了什么,我怎样才能做到这一点?

0 投票
0 回答
72 浏览

c++ - 如何让 Duktape 在 Mac 68k 上运行(就像在 PPC 上一样?)

我正在编写一个在 MacOS 7.x - 9.x 上运行的小应用程序(使用 Macintosh Toolbox),我决定包含 Duktape。

我使用在 MacOS 9 上运行的 CodeWarrior 6.0。
我使用低内存配置,在此处找到

当我为 PPC 编译时,它运行完美——但是当我为 68k 编译时,我得到了很多奇怪的行为和崩溃。

例如,如果我要调用duk_peval_string以下内容:

var i = 3;<- 没有错误
var i = 3; function a() { return 4; }<- 没有错误
var i = 3; function a() { return 4; } i = a();<-- "ReferenceError: -4e+0"
function a() { return 4; } i = a();<-- 启动时崩溃

我已启用自测 ( DUK_USE_SELF_TESTS) 以尝试找出可能发生的情况 - 在处理器设置下启用8-Byte Doubles和更改Struct Alignmentto PowerPC(而不是 68K 设置)会导致 Duktape 通过测试 - 但它仍然无法解决问题.

定义__m68k__(或不​​定义)似乎不会影响任何事情。

我知道这是一个很长的机会,但是在花了大约 4 个小时更改了我在 IDE 和 duk_config 上可以找到的几乎所有设置之后,我没有想法 - 所以任何帮助将不胜感激。

0 投票
1 回答
213 浏览

javascript - Duktape 有在 Linux 中执行外部程序的功能吗?

我在 Linux 上使用 Duktape(命令行,而不是浏览器),
并希望我的代码在 Linux 中执行外部程序,例如ls.

我浏览了 Duktape 的网站,寻找这个解释器和编译器支持的 JavaScript 函数的参考,
但找不到任何东西。

我确实在那里找到了一个 API 参考,但这似乎是在谈论解释器/编译器库提供给外部调用者的调用
函数,而不是解释器/编译器运行的 JavaScript 程序内部使用的函数。

有谁知道是否有办法在 Linux 中的 Duktape 中执行外部程序,
如果有,1-2 行示例代码将非常有帮助。

谢谢

0 投票
1 回答
94 浏览

javascript - JS 使用 Kotlin 和 Duktape 在 Android 中传播语法

我正在使用Duktape在我的 Android 应用程序中运行 JS 代码。我正在尝试在 JS 中实现一个日志函数,它接收多个可变参数。运行代码时出现异常:

方法抛出“com.squareup.duktape.DuktapeException”异常。SyntaxError:预期标识符(第 3 行)

Duktape 是否支持Spread 语法?一般是否支持 Kotlin 选项?

0 投票
0 回答
64 浏览

duktape - 在 duktape 的致命处理程序中打印函数调用堆栈

我想在 duktape 的致命处理程序中打印函数调用堆栈:

这是一个触发致命错误的示例 JS 脚本:

在此示例中,致命函数将仅打印故障 lineNumber,但不打印调用堆栈。任何帮助表示赞赏。

0 投票
1 回答
21 浏览

duktape - 配置 Duktape 2.5.0 以在 MacOSX (Catalina) 下使用

我想构建 Duktape 以在 MacOSX 下运行。这里的说明说要在 tools/configure.py 运行提供的配置工具 这里有不同的说明要运行 tools/genconfig.py

两个脚本都失败了

发行版中有以 .yalm 结尾的文件,但没有该名称的文件。

任何帮助将非常感激。我找不到任何 Duktape 的支持论坛。

0 投票
1 回答
369 浏览

javascript - 如何在 Duktape 中使用多个 js 文件?

我在嵌入式 MCU 中使用 Duktape。对于测试用例,我有: main.js 文件:

test.js 文件:

均编译为全局默认代码,main.js 使用 duk_call(ctx, 0); 执行

问题是调用 test() 函数时会引发错误。

我也尝试过使用

在 test.js 代码中,但它也不起作用。

我的理解是这两个文件都有单独的执行上下文。这就是功能无法访问的原因。

但是,将代码拆分为 Duktape 的多个文件的正确方法是什么?

PS 我的目标是避免使用全局上下文,因为在文档中据说这样访问变量很慢,这就是 main.js 看起来那样的原因。

PPS 我确定 test() 函数无法访问,但我不知道如何编写 js 代码以便一切正常。

PPPS print() 是一个输出到 esp32 串口的 C 函数,它可以工作。甚至 main.js 也可以在没有 test() 函数调用的情况下工作。

0 投票
0 回答
189 浏览

javascript - 如何在 Duktape 中实现非阻塞事件循环?

我将 Duktape 嵌入到运行 FreeRTOS 的 esp32 中。

而且我坚持实现非阻塞事件循环。

据我了解,在异步收益方面实现事件循环非常简单。但它不是很好,因为它总是会加载 CPU,即使除了等待事件发生之外没有真正发生任何事情。我正在考虑将另一个 Duktape 线程添加到运行我的应用程序的 Duktape 堆中。并使这个单独的 Duktape 线程由另一个使用互斥锁作为同步的 RTOS 任务运行。

但也有人写道,这可能会导致垃圾收集问题。

而且据我了解,我需要在绑定到堆内 js 函数的每个本机 C 函数中使用互斥锁,这有点不方便。

也许我错过了一些更简单的方法来创建这样一个事件循环?

我需要事件循环:为 GUI 执行回调并运行计时器。但是当我无事可做时,我需要它睡觉。