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

Open Directory in Node.js and node-webkit

本文关键字:node-webkit Node js      更新时间:2023-09-26

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

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

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

第一,

TypeError: undefined不是函数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是未定义的,但日志显示了我正确的链接。使用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);

版本& lt;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);
}