これには本当に簡単な答えは、おそらくそこにあるので、私は、このノードのものに非常に新しいですが、とにかく...ノードアプリの扱いは、グローバル
私が求めるアプリを構築していますインストールしたときに異なる扱いをパスに文字をエスケープファイルパス。
Users/[username]/Desktop/test\ file.txt
私はその配列にこのパスを追加し、JSON
ファイルを書き出すjsonfileを使用します。このパスはスペースを含むパスは次のようにエスケープできますターミナルウィンドウにファイルをドロップすることによって供給されています。このファイルにパスが今エスケープはを脱出したと次のようになります。
Users/[username]/Desktop/test\\ file.txt
今、私はJSONからそのパスを取得し、Finder
でそれを明らかにしたいと私は迷うところです。私はを使用してコードを実行している間にを使用して、-R
オプションを渡してパスを明らかにしていますが、すぐに私はnpm install -g .
でインストールします。作品をインストールし、私はアプリを実行することができます(正常に動作し、他の機能がある)が、今、私はエラーを取得するパスを明らかにしようとした場合:
{ [Error: Command failed: /bin/sh -c open -a "Finder" -R "/Users/[username]/Desktop/test\\\ file.txt"
The file /Users/[username]/Desktop/test\\ file.txt does not exist.
]
killed: false,
code: 1,
signal: null,
cmd: '/bin/sh -c open -a "Finder" -R "/Users/[username]/Desktop/test\\\\\\ file.txt"' }
私は別でエスケープの様々な量に気づきました私はnode bin/my-code.js
を使用してテストする場合
- なぜこの異なっていると私は世界的にインストールしたときにその方法を実行します。エラーのパスの参照はので、私の質問がありますか?
- 私のコードをテストするたびにインストールしたくないのと同じように2つの動作を同じにする方法はありますか?
- ファイルパスの保存および/またはエスケープに、より堅牢な方法がありますか?
残念ですが、これは少しばかりです。助言を歓迎します:)
エスケープを避けることができます。ファイルパスを引用符で囲むだけです。 – loadaverage
@loadaverage - 私の問題は、あまりにも多くの場所でエスケープされていたことだと思います。 '' '' '' '' '' ''が '' JSON ''がエスケープを逃げていたときにスペースを逃げていたときに '' '' '' mac-open'''がエスケープされたエスケープを脱出していました!最後に、「 '' 'mac-open''''を外して方程式を修正し、ちょっとしたことを学びました:) – popClingwrap