javascript - 浏览器内的Node JS fs模块

标签 javascript node.js module requirejs browserify

我有一个场景,我想从客户端将数据导出到 CSV。我将有一个文本框/区域或任何用户可以输入数据的地方,然后理想情况下只需单击一下,本地 CSV 文件就会使用该数据进行更新。

这很容易通过带有服务器交互的 NodeJS 及其核心模块(特别是 fs 模块)来实现,但显然不能从浏览器中实现。

我发现某些 Node 模块(例如 underscore)支持 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 模块本身,因为这似乎不需要其他模块来工作。

现在我遇到了这个错误:Uncaught ReferenceError: exports is not defined

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

define([], function() {})

但它也不起作用......我也尝试过复制 underscore 的模型,但仍然没有成功。

所以我想知道是否有人设法通过 RequireJS 或 Browserify 等库在浏览器中使用 utilfs 模块(或任何其他核心 NodeJS 模块)。

最佳答案

没错,exports 是特定于 Node 的 JS(用于使您的模块的一部分在模块外可用)并且不受网络浏览器的支持。尽管 NodeJS 在技术上是 JS,但也有不能互换的客户端特定属性(例如浏览器的 window 属性和 NodeJS 应用程序的 exports 属性)。

也就是说,here's一个客户端 JS 对 CSV 问题的回答。

关于javascript - 浏览器内的Node JS fs模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27019242/

相关文章:

ruby-on-rails - 初始化混合到模型中的模块

javascript - Array.map 项目到一个状态

Javascript:选中取消选中分组复选框

javascript - Angular/Node.js : Create subdomain on aws server from code end

javascript - 使用 k6 进行 Meteor 应用程序负载测试,等待 body 元素

perl - Perl 包/模块的返回值处理

javascript - VueJS 组件显示并将项目传递给组件

javascript - 阅读更多按钮将用户带到页面顶部

javascript - onBeforeUnload 没有被 headless 浏览器触发

javascript - Prestashop BO 模块/css 和 js 文件未加载