我正在尝试迁移一个 Node 项目以在浏览器中运行。该项目(暂不考虑原因)写入临时文件,使用 temp 和类似于以下的代码:
var temp = require('temp');
var fs = require('fs');
temp.open('helloworld.txt', function (err, info) {
if (err) {
console.log('Failed to open a temp file:', err);
return;
}
console.log('temp: ', info.path);
fs.writeFile(info.path, 'Hello World!', function (err2) {
if (err2) {
console.log('Failed to write to a temp file:', err2);
return;
}
});
});
运行浏览器代码时,出现以下错误:
对于以下行:
fs.open(filePath, RDWR_EXCL, 0600, function(err, fd) {
由
temp.open
调用。我非常清楚你不能在浏览器中使用普通的 ol' javascript 编写文件,但我想知道 browserify 是否有一些替代品,特别是因为我们正在谈论一个临时文件。
我找到了 browserify-fs ,并尝试:
browserify -r fs:browserify-fs my-example.js -o bfied.js
但我得到了完全相同的错误。我试图用
require('fs')
替换 require('browserify-fs')
但这也导致了类似的错误(我当然安装了 browserify-fs 模块..)任何建议的解决方案将不胜感激:) 如果这种类型的迁移是不可能的,我也很高兴知道..
谢谢!
最佳答案
我偶然发现了这篇文章,因为我认为我正在尝试做与您几乎完全相同的事情。我不确定你从哪里得到了这个,但我发现在使用 browserify-fs 时,你无法访问浏览器沙盒状态之外的文件。
所以当尝试...
var fs = require('broserify-fs);
fs.read('hello.txt', 'utf8' ....
我和你有同样的错误,但是当这样做时......
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);
});
});
});
一切正常(我认为只使用临时文件)。
我对此非常陌生,所以我不确定最好的方法是什么。我想你要么想在本地运行一个 Node.js 服务器并向它发出 ajax 命令来执行读/写操作,要么调查 HTML5 文件系统的东西 - 这看起来是一篇好文章 - http://www.html5rocks.com/en/tutorials/file/dndfiles/
希望这对您有所帮助(抱歉,您必须等待 2 个月才能得到答案;)偶然发现您的问题,当没有答案时,我的心沉了下去)
汤姆
关于javascript - 我尝试将 browserify 与 'temp' 和 'fs' 模块一起使用,但我得到的只是这个糟糕的错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25473213/