在 nodewebkit 中使用 lua.vm.js 的 io 操作

io operations using lua.vm.js in nodewebkit

我正在使用 npm 包 lua.vm.js to execute some pre-existing lua code in my node webkit based app (nw)。

文件newtest.lua包含:

local myFile, err = io.open('/tmp/file.txt')
print(myFile)
print(err)
io.input(myFile)
theContent = io.read('*all')
print(theContent)

在我的 javascript 代码中我正在做的:

var fs = require('fs');
theFileContent = fs.readFileSync("./newtest.lua", "utf8");
var LuaVM = require('lua.vm.js');
var l = new LuaVM.Lua.State();
l.execute(theFileContent);

如果我简单地执行:

lua newtest.lua

正如预期的那样,我在控制台上打印了 '/tmp/file.txt' 的内容。

但是如果我 运行 来自基于 nw 的应用程序的相同代码,我什么也得不到:输出控制台上什么也没有,甚至全局变量也没有 theContent设置为正确的值

myFilenil 并且 err[=53= .txt: 没有那个文件或目录

但是文件就在那里。

我开始认为lua.vm.js执行的lua代码不允许io操作。任何的想法?

更新 我尝试 运行 一个简单的节点应用程序(从图片中删除 nodewebkit)。 This is the example.js我是运行宁

正如我在 https://github.com/kripken/lua.vm.js/issues/30 的回答:

lua.vm.js 将 IO 虚拟化为内存中的虚拟文件系统(使用 emscripten) 这是因为它主要针对浏览器,其中不存在真正的 IO。

如果您 运行 在节点中,您可以使用节点文件函数:

local file = js.global:require"fs":open("/tmp/file.txt")