javascript – 在浏览器中使用节点JS fs模块

前端之家收集整理的这篇文章主要介绍了javascript – 在浏览器中使用节点JS fs模块前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个场景,我想从客户端将数据导出到CSV.我将有一个文本框/区域或用户可以输入数据的任何地方,然后理想情况下只需单击一下,本地CSV文件将使用该数据进行更新.

这可以通过NodeJS与服务器交互及其核心模块(特别是fs模块)轻松实现,但显然不是来自浏览器.

我发现某些节点模块(例如下划线)支持RequireJS使特定模块在浏览器中工作的方法.所以对于下划线我做了这个:

methods.js

define(['underscore'],function(_) {

    var Methods = {
        doSomething: function() {

            var x = _.size({one: 1,two: 2,three: 3,xuz: 3});

            alert(x);
        }
    };

    return Methods;
});

common.js

requirejs.config({
    baseURL: 'node_modules',paths: {
        underscore: 'underscore/underscore',}
});

require(['methods'],function(y){
    y.doSomething();
});

的index.html

<script data-main="common" src="require.js"></script>
<script>
require(['common'],function() {

    require(['methods.js']);
});
</script>

以上工作正常,将显示警报:4.

但是,当我尝试使用fs模块时,它将无法正常工作.它会显示错误

Module name "util" has not been loaded yet for context: _. Use require([])

据我所知,这是因为fs需要其他几个模块,其中一个是util.

所以我继续将所有这些模块添加到RequireJS配置中.但仍然没有运气,所以我专门测试了util模块,因为这似乎不需要其他模块才能工作.

现在我陷入了这个错误:未捕获的ReferenceError:未定义导出

我尝试通过封装整个模块源代码来模块化这个util模块:

define([],function() {})

但它也没有用……我也试过复制下划线的模型,但仍然没有运气.

所以我想知道是否有人设法使用util&浏览器中的fs模块(或任何其他核心NodeJS模块),包括RequireJS或Browserify等库.

解决方法

这是正确的,导出是特定于节点的JS(用于使模块的一部分在模块外部可用),并且不受Web浏览器的支持.尽管NodeJS在技术上是JS,但是存在无法互换的客户端特定属性(如浏览器的窗口属性和NodeJS应用程序的导出).

也就是说,here’s客户端JS回答了CSV问题.

猜你在找的JavaScript相关文章