0

次のコマンドを使用して LuaFileSystem をインストールしました: luarocks install luafilesystem. スクリプトで使用したいのですが、次のエラーが発生します。

[splay.sandbox] W: lfs の要求が拒否されました 10:34:11.65 (6) [splay.events] E: スレッド: 0x93f0b20 DIE (エラー: [string "job code"]:35: ローカル 'lfs' のインデックス作成を試みます(nil 値)) 10:34:11.65 (6) [splay.events] E: スタック トレースバック: 10:34:11.65 (6) [string "job code"]:35: 関数 'getHomeDirectory' 内 10:34 :11.65 (6) [string "job code"]:79: in function <[string "job code"]:76>

私はそれをグローバルに宣言しようとしました:lfs = require "lfs"、または単にrequire "lfs"、関数内でローカルでも:

function getHomeDirectory(position)
    local lfs = require"lfs"

    print(lfs.currentdir())
end

しかし、それでも私はそのエラーを受け取ります。それを機能させるためにまだやらなければならないことがありますか?

LATER EDIT:ioでファイルを開こうとすると、「a nil value」と同じエラーが発生します:

local f = io.open('/home/alex/Desktop/SPLAY WORK/splay_client_commands_1.4/test1.txt', "r")

[splay.events] E: スレッド: 0x955f4c0 DIE (エラー: [string "job code"]:120: ローカル 'f' (nil 値) のインデックスを作成しようとしています)

何が問題なのですか?

4

1 に答える 1

2

io.open 呼び出しは、周囲に追加することで簡単にデバッグできますassert。これにより、io.open がファイルを開くのに失敗したときにエラー メッセージが出力されます。

local f = assert(io.open('/home/alex/Desktop/SPLAY WORK/splay_client_commands_1.4/test1.txt', "r"))

この「トリック」については、 http ://www.lua.org/pil/21.2.html でも説明されています。

于 2013-06-09T19:59:19.773 に答える