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

时间:2015-07-24 22:58:46

标签: javascript node.js lua node-webkit

我正在使用npm包lua.vm.js在我的基于webkit节点的应用程序(nw)中执行一些预先存在的lua代码。

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 也没有设置为正确的值

myFile nil 错误 /tmp/file.txt:没有此类文件或目录 < / p>

但文件就在那里。

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

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

1 个答案:

答案 0 :(得分:1)

我在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")