在 Node.js 和 node-webkit 中打开目录

Open Directory in Node.js and node-webkit

我有一个函数可以在目录创建后打开它,

setTimeout(function()
{
    var fs = require('fs');
    console.log(newPath);
    var open = fs.opensync(newPath, 'r');
}, 2500);

但这似乎不起作用。我收到以下错误

首先是,

TypeError: undefined is not a function at eval (eval at <anonymous> (file:///Users/proslav/Library/Developer/Xcode/DerivedData/trackingCore-ecxfviftqracjxhimcuhhhvyddso/Build/Products/Debug/trackingCore.app/Contents/Resources/timeBroFront.app/Contents/Resources/app.nw/js/jquery-1.10.2.min.js:3:4994), :43:18)

第二个是,

Uncaught ReferenceError: require is not defined

我在想可能是我的变量 newpath 未定义,但日志显示正确 link。 使用 var fs = require('fs'); 创建目录效果很好。

我在这里做错了什么?

我发现了必须如何完成。 Node-webkit 为此提供了一个功能。它正在 MAC 上工作,也应该在 windows 上工作。 下面的函数是一个示例函数。 nw.guigui.Shell.showItemInFolder 为我做了这件事。感谢输入。

/*---------
Open Folder
---------*/
function openFolder(path){
    var gui = require('nw.gui');
    gui.Shell.showItemInFolder(path);
}

在 nw.js 版本 0.13 或更高版本中,使用:

nw.Shell.showItemInFolder(fullpath);

版本 < 0.13:

var gui = require('nw.gui');
gui.Shell.showItemInFolder(fullpath);

请注意,需要完整路径名。如果它不存在,它将静静地失败。

如果路径类似于 c:\foo\bar.txt,它将打开文件夹 foo 并突出显示文件 bar.txt.

如果路径是 c:\foo\foo2,它将打开文件夹 foo 并突出显示文件夹 foo2(我预计它会打开文件夹 foo2,但它会打开父文件夹)。


为了找到 运行 应用程序的完整路径,因为我们不能在前端使用节点函数(这就是为什么你在尝试加载 fs 模块时出错),我创建了具有以下内容的节点模块 (utils.js):

exports.getFullPath = function(fileName) {
    var path = require('path');
    return path.resolve(__dirname, fileName);
}

在前端:

function openFolder(path) {
    var utils = require('./utils');
    var fullpath = utils.getFullPath(path);
    nw.Shell.showItemInFolder(fullpath);
}