2016-07-25 176 views
1

我有以下命令:分叉進程找不到模塊

var fk = cp.fork('./client/processes/getClipboardImage.js',[],{cwd: __dirname + '/../../'}); 

然後運行這個:

"use strict"; 
const electron_1 = require('electron'); 
var base64Image = electron_1.clipboard.readImage().toDataURL(); 
process.emit('got-string', base64Image); 

我不知道爲什麼,但我得到一個錯誤說:

找不到模塊「電子」

插入叉中的文件確實可以訪問電子,那麼爲什麼不分叉過程?

enter image description here

正在執行的文件是在controllers它運行在utils/Workpace.js的方法和該方法創建叉。

客戶機/控制器/ index.js

import { Workspace } from '../../client/utils/Workspace'; 
import { globals } from '../../client/utils/global'; 

ipcRenderer.on('workspace.paste', e => { 
    if (globals.activeWorkspace) { 
     globals.activeWorkspace.pasteToLayer(); 
    } 
}); 

客戶/ utils的/ Workspace.js

import cp = require('child_process'); 

export class Workspace { 
    public pasteToLayer(/*image: Electron.NativeImage*/): Promise<Layer> { 
     return new Promise(resolve => { 
      var fk = cp.fork('./client/processes/getClipboardImage.js',[],{cwd: __dirname + '/../../'}); 
      fk.on('got-string', (err, out) => { 
       if (err) { 
        throw err; 
       } 
       // do some final thigs 
      }); 
     }); 
    } 
} 

客戶/ utils的/ global.js

import { Workspace } from '../../client/utils/Workspace'; 

export class globals { 

    public static activeWorkspaceId: string; 
    public static activeWorkspace: Workspace; 

} 
+0

調用'cp.fork'的文件在哪裏?它看起來像'__dirname +'/../../''可能會增加太多的級別? –

+0

實際調用它的文件是'Workspace.js' –

+0

咦?是不是從'Workspace.js'到那裏'../ processes/getClipboardImage.js'的路徑? –

回答

1

可能是這個cwd: __dirname + '/../../'帶您到 以上包含node_modules的級別。

很難確定有關目錄結構的更多信息。

+0

我已經用屏幕截圖和說明更新了我的問題 –

+0

確定它看起來確定cd你正在做的是node_modules文件夾的更高級別。所以當它向上傳遞給你文件夾結構時,它通過node_modules和node_modules不再可用。 – Prospero

+0

Cwd位於生成文件夾的根目錄中。 build文件夾是node_modules文件夾的兄弟。 –