2015-12-08 7 views
14

アプリケーションは、ログデータをネットワークドライブに保存する必要があります。 ドライブがWindowsでホストされている場合、すべて正常です。 ドライブがMacでホストされている場合、読み取り/書き込みはOKですが、EPERMを追加するとログがまったく機能しません。 コードはネットワークドライブ上のappendFileのEPERM

fs.appendFileSync('xxx.txt', 'zzzzzzzz'); 

がどのように正確にデータを追加するのは非常に簡単ですか?通常はファイルが大きすぎてメモリにロードできません。

更新:読み書き-削除作成はOKです! nodejsログファイルへの書き込みを許可されていません:許可 - のみアペンドで開くと

+0

fs.appendFileを試してみましたか?おそらく同じ結果ですが、試してみる価値があります。 – Gary

+0

追加が失敗します。フラグ 'a'を持つcreateWriteStreamさえ。しかし、そのようなフラグを付けずに書くと、うまく動作します –

+0

ls -le xxx.txtをやったことがありますか?競合するACLがある可能性があります。 – Gary

答えて

0

EPERMがエラーを表します失敗します。アプリケーションがログファイルにアクセスできるかどうかを確認し、ノードアプリケーションがログファイルに書き込むように変更します。 Mac上で

、あなたは(これはあなたのファイルシステムへのアクセス権を持っている人は、ログファイルへの書き込みを許可されていることに注意してください)chmod 777 somefile.logを行うことができます。

おそらくWindowsサーバは、ログファイルを作成しているとMacサーバは、(それが所有者ではなく、書き込み許可をパブリックではないので)それにアクセスすることを許可されていません。

+0

私が言ったように、 '読み取り/書き込みはOKですが、EPERMを追加します' –

2

私はリュックGendriksとなるだろう。あなたが/ folder.Try次のファイルに十分な権限を持っていないときEPERMが発生

コード:

fs.chmod('xxx.txt', 777, function(err){ 
    if(err){ 
    console.log(err); 
    return; 
    } 
    fs.appendFileSync('xxx.txt', 'zzzzzzzz'); 
}); 

リファレンス

https://nodejs.org/api/fs.html#fs_fs_chmodsync_path_mode https://nodejs.org/api/fs.html#fs_fs_appendfilesync_file_data_options

お役に立てれば。

+0

同じ結果 - EPERM。 Windowsでは、別の権限が追加されます。おそらく、hfs-driveなどを使用するウィンドウでノードを実行すると、ノードにバグが発生する可能性があります。 –

+0

私は2回言った - 読み取り - 書き込み - 削除 - 作成はOKです!追加で開くだけが失敗します。 –

+0

appendFileまたはappendFileSyncを使用している場合、これはWindowsでは動作しません。 appendFileとappendFileSyncがファイルを作成できますが、書き込みはできないという事実は、Windowsビルド用のNodeJSのバグでしょう。残念な。 appendFileまたはappendFileSyncをローカルの一時ファイルに追加して、それを目的の場所にコピーすることができます。しかし、まだ理想的ではありません。 – ariestav

1

は、ファイルが他のプロセスによって使用されることができますか? (アクセス/操作が拒否されます)

+0

いいえ、私は数回試しました。 –

関連する問題