Проблемы с вводом / выводом файлов приложений Chrome

#javascript #node.js #google-chrome-app #browserify

#javascript #node.js #google-chrome-app #browserify

Вопрос:

Я пытаюсь загрузить PDF-файл в автономное приложение Chrome с помощью pdf.js и node.js (fs через browserify).

Моя проблема с путями к файлам. Я попытался провести короткий тест со следующим кодом:

 var fs = require('browserify-fs');

fs.mkdir('/home', function() {
    fs.writeFile('/home/hello-world.txt', 'Hello world!n', function() {
        fs.readFile('/home/hello-world.txt', 'utf-8', function(err, data) {
            console.log(data);
        });
    });
});
  

Он ведет себя точно так, как должен. На консоли я прочитал «Привет, мир!». Моя первая проблема: Я ПОНЯТИЯ НЕ ИМЕЮ, ГДЕ БЫЛ СОЗДАН ЭТОТ ФАЙЛ ? !?!Я провел поиск по всему своему жесткому диску и не могу найти hello-world.txt где угодно. Где browserify-fs обрабатывается как root?

Во-вторых, я попробовал другой тест, используя немного ввода / вывода Chrome и node.js .

 var fs = require('browserify-fs');
var path;

chrome.fileSystem.chooseEntry({'type': 'openFile'},
function( entry,  fileEntries) {
  chrome.fileSystem.getDisplayPath(entry, function(displayPath){ 
    path = displayPath;
    console.log(path);
    fs.appendFile(path, 'data to append', function (err) {
      if (err) throw err;
      console.log('The "data to append" was appended to file!');
    });
  });
});
  

Как и должно быть, Chrome предлагает мне выбрать файл. После выбора он выводит правильный путь к файлу на консоль (например, "~/Downloads/foo.txt" ). Но на данный момент fs.appendFile() не удается найти это местоположение. Итак, я подумал, может быть, ему нужен путь от root. Поэтому я вручную передал его '/home/chronos/user/Downloads/foo.txt' и fs.appendFile() все равно не смог найти файл.

Итак, весь этот пост был длинным способом спросить, как fs-модуль узла обрабатывает пути и где находится корневой каталог, когда я использую browserify.

Спасибо.

Комментарии:

1. Похоже, вы задаете два разных вопроса. Подумайте о том, чтобы задавать их отдельно, чтобы ваши теги вопросов могли быть применены правильно.

2. Вы абсолютно правы. Я думаю, мне нужно перегруппироваться и предпринять еще один шаг к определению проблемы, прежде чем я начну задавать вопрос.

Ответ №1:

Ваш первый вопрос, похоже, касается browserfy-fs, с которым я не знаком, а не о приложениях Chrome. Показанный вами код не использует никаких API-интерфейсов приложений Chrome.

Ваш второй вопрос показывает код, в котором chooseEntry предоставляет объект FileEntry для его обратного вызова, и это то, с чем вам нужно выполнять ввод / вывод, используя соответствующие API (Google «FileEntry API»).). Опять же, передача пути к browserfy-fs может или не может сделать ничего полезного, но что бы он ни делал или не делал, это вопрос browserfy-fs, а не вопрос приложения Chrome.

Есть ли какая-то причина, по которой вы пытаетесь использовать browserfy-fs для ввода / вывода файлов в приложении Chrome?

Комментарии:

1. Возможно, я запускаю неправильное дерево с помощью browserfy. Сегодня утром я попытался просто использовать файловый ввод / вывод Chrome, но я наткнулся на стену, пытаясь что-либо сделать с локальными файлами. Кроме того, я полагал, что мне нужно использовать node.js потому что исследование, которое я провел, показало, что единственным было получить pdf.js для работы в пакетном приложении Chrome. Сложная штука…

2. Не могли бы вы уточнить, что означает «врезаться в стену»? Сообщение об ошибке? Сбой? Не отвечает? Неправильные данные? У вас были правильные разрешения в вашем файле manifest.json? (Я использую jsPDF с приложениями Chrome с большим успехом.)

3. Во-первых, спасибо за помощь в этом. Во-вторых, я начал работать с этим app.js скрипт, и это помогло мне работать с файлами за пределами fs узла ( github.com/GoogleChrome/chrome-app-samples/blob/master /… ). Итак, я думаю, что я двигаюсь в правильном направлении. Теперь, когда я открываю текстовые файлы и управляю ими из своего приложения, я собираюсь предварительно связать pdf.js и посмотрите, могу ли я просматривать PDF-файлы, открытые из моей файловой системы. Я сообщу, если столкнусь с чем-нибудь странным. Спасибо!