2016-12-06 55 views
2

當我需要在我的js代碼中使用「ref」模塊並通過節點運行時,我會得到所需的輸出。 但是,當我在的package.json提供必要的改變運行經由電子相同的js代碼,它說「無法找到綁定文件。」如何從電子需要本地節點模塊?使用ref和ffi模塊獲取錯誤

這裏是我的package.json文件

{ 
"name": "firstapp", 
"version": "1.0.0", 
"description": "", 
"main": "index.js", 
"scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1", 
    "start": "electron .", 
    "package": "electron-packager . myapp --platform=win32 --arch=ia32 --version=1.0.0 --overwrite" 
}, 
"author": "", 
"license": "ISC", 
"devDependencies": { 
    "electron": "^1.4.8", 
    "electron-prebuilt": "^1.4.8", 
    "electron-rebuild": "^1.4.0", 
    "ffi": "^2.2.0", 
    "node-gyp": "^3.4.0", 
    "reach": "^1.0.0", 
    "ref": "^1.3.3" 
}, 
"dependencies": { 
    "ffi": "^2.2.0", 
    "ref": "^1.3.3" 
} 
} 

這裏是我的index.js文件

const electron = require('electron'); 
const ref = require('ref'); 
const app = electron.app 
const BrowserWindow = electron.BrowserWindow 
let mainWindow 
const createWindow =() => { 
mainWindow = new BrowserWindow({ name: "ishwar", width: 800, height: 600, visible: true, toolbar: false }); 
mainWindow.loadURL(__dirname + '/index.html'); 

mainWindow.webContents.openDevTools() 

mainWindow.on('closed',() => { 
    mainWindow = null 
}) 
} 
app.on('ready', createWindow) 
app.on('window-all-closed',() => { 
app.quit() 
}) 
app.on('activate',() => { 
if (mainWindow === null) { 
    createWindow() 
} 
}) 

當我啓動項目「故宮開始」,而不需要「裁判」我沒有得到任何錯誤。但是當我使用ref時,會引發錯誤。

P.S.主要要求是「ffi」模塊,並且我已經做了必要的修改以運行「ffi」。 「FFI」實習生需要「REF」,使得當我運行代碼,其包括經由節點REF,它完美..

+0

不知何故,我設法找到解決方案。一旦我使用普通的npm命令安裝了軟件包,我需要在外部爲這個新軟件包運行「電子重建」命令。在的package.json文件和腳本內作出變化添加「rebuildref」:「電子重建-f -w裁判」,「rebuildffi」:「電子重建-f -w FFI」,最後這些命令,節點運行rebuildref和節點運行rebuildffi –

回答

2

不知我設法找到這一個解決方案。在使用npm命令安裝這些軟件包之後,我得到了綁定錯誤。作爲一種解決方案,我需要在外部對這個新包進行「電子重建」命令。用npm下載電子重建模塊,然後運行「electorn-rebuild -f -w ffi」和「electron-rebuild -f -w ref」。就是這樣,現在就開始工作。