2

jsコードで「ref」モジュールを必要とし、ノードを介して実行すると、目的の出力が得られます。しかし、package.json に必要な変更を加えて同じ js コードを electron 経由で実行すると、「バインディング ファイルが見つかりませんでした..」と表示されます。

ここに私の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」を必要とせずにプロジェクト「npm start」を開始すると、エラーは発生しません。しかし、refを使用すると、エラーがスローされます。

PS主な要件は「ffi」モジュールであり、「ffi」を実行するために必要な変更を行いました。「ffi」インターンには「ref」が必要なため、ノードを介してrefを含むコードを実行すると、完全に機能します..

4

1 に答える 1

4

どういうわけか、私はこの解決策を見つけることができました。npm コマンドを使用してこれらのパッケージをインストールした後、バインド エラーが発生しました。解決策として、その新しいパッケージに対して「electron-rebuild」コマンドを外部で実行する必要がありました。npm で electron-rebuild モジュールをダウンロードし、「electorn-rebuild -f -w ffi」および「electron-rebuild -f -w ref」を実行します。以上で、現在動作しています。

于 2016-12-08T13:32:19.177 に答える