2016-03-21 66 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是不使用第三方模块,只是因为它们的存在。在这种情况下,我并不需要它试图提供的全局情况,而实际上导致问题的额外复杂性。