我需要在我的ember-electron应用程序中使用第三方npm包,这需要访问文件系统(ngraph.offline.layout,该文件系统也有多个依赖项。
它使用以下功能:
function createLayout(graph, options) {
options = options || {};
var iterations = typeof options.iterations === 'number' ? options.iterations : 500;
var saveEach = typeof options.saveEach === 'number' ? options.saveEach : 5;
var outDir = typeof options.outDir === 'string' ? options.outDir : './data';
var is2d = options.is2d ? true : false;
var coordinatesPerRecord = is2d ? 2 : 3;
var intSize = 4;
var layouter = is2d ? layout3d.get2dLayout : layout3d;
var layout = layouter(graph);
if (!fs.existsSync(outDir)) {
mkdirp.sync(outDir);
}
var lastIteration = getLastIteration(outDir);
return {
run: run,
lastIteration: getLastIteration
};
在我的ember控制器中,我将其导入:
import createLayout from 'npm:ngraph.offline.layout';
然后
g=graphGenerator.wattsStrogatz(1000, 10, 0.50);
var layout = createLayout(g);
layout.run();
然而,当我直接在我的控制器中对文件系统发出另一个请求时,我自己的功能正常工作:
import toDot from 'npm:ngraph.todot';
var fs = requireNode('fs');
var stream = fs.createWriteStream('graphDot.txt',{
flags:'a'
});
toDot.write(g, function customWriter(line){
stream.write(line + '\n');
});
stream.end();
究竟有什么区别?
当模块执行图形的离线布局时,它应该在"服务器上执行"我想知道这是否是正确的做法?
EDIT1: import和requireNode驻留在特定路由的ember控制器中