2016-12-06 54 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”。就是这样,现在就开始工作。