我对这个节点的东西很新,所以可能有一个非常简单的答案,但无论如何......
我正在构建一个提示输入文件路径的应用。通过将文件放入终端窗口来提供此路径,该窗口提供如下所示的空间转义路径:
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"' }
我注意到错误中不同路径引用中的转义量不等,所以我的问题是:
node bin/my-code.js
进行测试时,为何会有所不同
当我全局安装并以这种方式运行时?抱歉,这有点漫无边际。欢迎任何建议:)
答案 0 :(得分:0)
所以我还没有完全回答我提出的所有问题,但我已经解决了这个问题并且学到了我认为在Node开发中非常有价值的一课。
试图找到我实际打开源mac-open的问题,并且这样做意识到我实际上根本不需要使用附加模块。搜索源代码让我看到了关于child_process的阅读,并最终解开了整个mac-open模块的简单:
var exec = require("child_process").exec;
exec("open " +assetsPath +" -R", function(err){
if(err)
console.log(err);
});
这里的esson不是因为它们在那里而使用第三方模块。在这种情况下,我并不需要它试图提供的所有情况,并且额外的复杂性实际上导致了这个问题。