ember-electron在第三方npm模块中使用fs

时间:2018-03-04 15:19:32

标签: node.js ember.js electron fs

我需要在我的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();

但我总是收到以下错误: enter image description here

然而,当我直接在我的控制器中对文件系统发出另一个请求时,我自己的功能正常工作:

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控制器中

0 个答案:

没有答案