【发布时间】:2015-01-17 02:42:22
【问题描述】:
我有一个场景,我想从客户端将数据导出到 CSV。我将有一个文本框/区域或任何用户可以输入数据的地方,然后理想情况下只需单击一下,本地 CSV 文件就会使用该数据进行更新。
使用带有服务器交互的 NodeJS 及其核心模块(特别是 fs 模块)很容易实现这一点,但显然不能通过浏览器实现。
我发现某些节点模块(例如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 等库在浏览器中使用 util 和 fs 模块(或任何其他核心 NodeJS 模块)。
【问题讨论】:
标签: javascript node.js module requirejs browserify