在 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设置为正确的值
myFile 是 nil 并且 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")
我正在使用 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设置为正确的值
myFile 是 nil 并且 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")