我试着用'temp'和'fs'模块来使用browserify,我得到的只是这个糟糕的错误

我正在尝试迁移节点项目以在浏览器中运行。 该项目(从来不知道这一刻的原因)写入临时文件,使用临时代码类似于这样的代码:

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; } }); }); 

当运行browserified代码时,我得到以下错误:

Uncaught TypeError:undefined不是一个函数

对于以下行:

 fs.open(filePath, RDWR_EXCL, 0600, function(err, fd) { 

temp.open

我非常清楚你不能在浏览器中使用普通的“javascript”编写文件,但是我想知道是否browserify有一些替代,特别是因为我们正在讨论一个临时文件。

我发现browserify-fs ,并试图:

 browserify -r fs:browserify-fs my-example.js -o bfied.js 

但我得到完全相同的错误。 我试图用require('browserify-fs')replacerequire('fs') ,但是也导致了类似的错误(我当然安装了browserify-fs模块..)

任何build议的解决scheme,将不胜感激:)如果这种types的迁移是不可能的,我也很高兴知道..

谢谢!

我偶然发现这篇文章,因为我想我正在尝试和你完全一样的事情。 我不知道你在哪里,但是我发现当使用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 /教程/文件/ dndfiles /

希望有一些帮助(对不起,你必须等待2个月的答案;)这是偶然的,我偶然发现你的问题,当我没有答案时,我的心就沉没了)

汤姆