#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-файлы, открытые из моей файловой системы. Я сообщу, если столкнусь с чем-нибудь странным. Спасибо!