2017-01-08 3 views
0

Борьба, чтобы найти текущий каталог при создании исполняемого файла nw.js.Как получить текущий каталог для исполняемого файла nw.js

Я создал приложение сервера Mac с сочетанием html и Javascript и большого количества использования узла node.js. У меня есть два xml-файла, которые сервер обращается и которые находятся в той же папке, что и приложение.

Когда я запускаю приложение следующим образом: ./nwjs.app/Contents/MacOS/nwjs. и найдите текущий каталог следующим образом: var workFolder = process.cwd(); , тогда моя рабочая папка - это место, где находятся файлы приложения и xml.

Однако, если я следую инструкциям 'package and distribute' (создайте файл .nw, назовите его app.nw и поместите содержимое/ресурсы), а затем запустите исполняемый файл .app, я получаю следующее: рабочая папка: /private/var/folders/3x/2hq40kzs59q8gj6yfn4ktj940000gn/T/.io.nwjs.nw.HcwnF2

Я предполагаю, что контекст изменился. Поэтому я искал альтернативы для получения текущего каталога. Я попробовал: var workingFolder = global .__ dirname; и получил тот же результат. Затем: var workFolder = process.env.PWD; и получил undefined (хотя это сработало для «неупакованной» версии)

Как получить текущий каталог?

Любые идеи были бы высоко оценены!

ответ

1

Node-Webkit извлекает файл * .nw во временный каталог, так что временный каталог является текущим рабочим каталогом. Вы можете использовать бок о бок упаковку (помещая файл package.json и nw.exe в ту же папку без сжатия), чтобы поддерживать рабочий каталог в папке, где находятся файлы nw и package.json. Вы можете использовать следующие, чтобы получить текущий путь

var path = require('path'); 
var nwPath = process.execPath; 
var nwDir = path.dirname(nwPath); 
+0

Я попробовал ваше предложение, и теперь получаем следующее: –

+0

/Пользователи/richardfoss/Documents/Immergo.app/Содержание/Версии/50.0.2661.75/nwjs Helper.app/Contents/MacOS –

+0

Я переименовал nwjs.app в Immergo.app. Теперь я могу отсканировать эту строку для «Immergo.app» и извлечь текущий каталог. Так что очень полезно, спасибо, но все еще интересно, есть ли способ получить «запуск» каталога без этого, а также хотел бы знать, почему выполняется nwjsHelper. –

0

Для использования Windows: var path = require('path'); path.dirname(process.execPath);

для Mac и Linux использовать: global.__dirname;

Смежные вопросы