2016-03-21 62 views
0

當路徑字符區別對待我非常新的這個節點的東西,所以有可能是一個非常簡單的答案,這一點,但反正...節點應用治療逃脫全球的裝機量

我建立,對於促使應用程序一個文件路徑。此路徑刪除一個文件與空間逃脫這樣賦予的路徑終端窗口提供:

Users/[username]/Desktop/test\ file.txt 

然後我用jsonfile這個路徑添加到一個數組並寫出一個JSON文件。在這個文件的路徑現在有越獄逃脫,看起來像這樣:

Users/[username]/Desktop/test\\ file.txt 

現在我想從JSON搶路徑和Finder揭示它,這是我迷路。我使用mac-open來通過傳遞-R選項來顯示路徑,並且此工作正常,但我正在使用node bin/my-code.js測試和運行我的代碼,但是一旦我安裝了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"' } 

我已經注意到了不同數量逃逸的不同在錯誤路徑引用所以我的問題是:

  1. 爲什麼當我測試使用node bin/my-code.js 這是不同的,當我在全球安裝和運行呀?
  2. 有沒有一種方法可以使兩者的行爲相同,因爲我不想每次都想要測試我的代碼時進行安裝?
  3. 是否有一種更健壯的方式來存儲和/或轉義文件路徑?

對不起,這有點亂。任何建議歡迎:)

+0

您可以避免轉義,只需將文件路徑放在引號中即可。 – loadaverage

+0

@loadaverage - 我認爲我的問題是它在太多的地方被逃脫。 '''終端'''是逃離空間然後''''JSON''''逃脫逃脫然後''''mac-open''''逃脫逃脫逃脫!最後把方程中''''mac-open'''解決了這個問題,我沿途學習了一點:) – popClingwrap

回答

0

所以我並沒有完全回答我提出的所有問題,但我已經解決了這個問題,並瞭解了我認爲在節點開發中真正有價值的一課。

試圖找到問題,我實際上打開源mac-open,並在這樣做意識到,我根本不需要使用額外的模塊。搜索源促使我尋找到閱讀child_process並最終解僱掉整個MAC-開放模塊的簡單:

var exec = require("child_process").exec; 

exec("open " +assetsPath +" -R", function(err){ 
    if(err) 
     console.log(err); 
}); 

這裏的esson是不使用第三方模塊,只是因爲它們的存在。在這種情況下,我並不需要它試圖提供的全局情況,而實際上導致問題的額外複雜性。