【问题标题】:Chrome App File I/O problemsChrome 应用文件 I/O 问题
【发布时间】:2014-06-30 06:02:33
【问题描述】:

我正在尝试使用 pdf.js 和 node.js(fs 通过 browserify)将 pdf 加载到离线 Chrome 应用程序中。

我的问题是文件路径。我尝试使用以下代码进行简短测试:

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!”。 我的第一个问题:我不知道该文件是在哪里创建的?!?!我已经搜索了整个硬盘驱动器,但找不到 hello-world.txt 任何地方。 browserify-fs在哪里被视为root?

其次,我尝试了另一个测试,使用了一些 Chrome 的 I/O 和 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() 找不到那个位置。所以,我想,也许它需要来自根目录的路径。所以我手动传递了'/home/chronos/user/Downloads/foo.txt'fs.appendFile() 仍然找不到文件。

所以,整篇文章都是在询问 node 的 fs 模块如何处理路径,以及我使用 browserify 时根目录的位置。

谢谢。

【问题讨论】:

  • 您似乎在问两个不同的问题。考虑单独询问他们,以便正确应用您的问题标签。
  • 你说得对。我想在我开始提问之前,我需要重新组合并再次尝试定义问题。

标签: javascript node.js google-chrome-app browserify


【解决方案1】:

您的第一个问题似乎是关于我不熟悉的 browserfy-fs,而不是关于 Chrome 应用程序。您显示的代码不使用任何 Chrome 应用 API。

您的第二个问题显示的代码中,chooseEntry 为其回调提供了一个 FileEntry 对象,这就是您需要使用适当的 API(Google“FileEntry API”)进行 I/O 的内容。同样,将路径传递给 browserfy-fs 可能会或可能不会做任何有用的事情,但无论它做什么或不做什么都是 browserfy-fs 问题,而不是 Chrome 应用问题。

您尝试使用 browserfy-fs 在 Chrome 应用程序中执行文件 I/O 是否有某些原因?

【讨论】:

  • 也许我使用 browserfy 找错了树。今天早上,我尝试简单地使用 Chrome 的文件 I/O,但在尝试对本地文件执行任何操作时遇到了困难。此外,我认为我需要使用 node.js,因为我所做的研究表明,唯一的办法就是让 pdf.js 在打包的 chrome 应用程序中工作。艰难的东西......
  • 您能否更具体地了解“撞墙”的含义?错误信息?碰撞?没有反应?数据错误?您在 manifest.json 中是否拥有正确的权限? (我在 Chrome 应用中使用 jsPDF 取得了巨大成功。)
  • 首先,感谢您的帮助。其次,我开始使用这个 app.js 脚本,它帮助我处理节点 fs (github.com/GoogleChrome/chrome-app-samples/blob/master/…) 之外的文件。所以,我认为我正朝着正确的方向前进。现在我正在从我的应用程序中打开和操作文本文件,我将尝试绑定 pdf.js 并查看是否可以查看从我的文件系统打开的 pdf。如果我遇到任何奇怪的事情,我会报告。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-24
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多