전자 제품을 처음 사용했으며 SQL Server와 함께 sqlanywhere 패키지를 사용하는 데 문제가 있습니다.Node Electron SQLAnywhere 관련 문제 - 오류 : 모듈을로드 할 수 없습니다.
나는 매우 기본적인 테스트를 수행하고 있으며 드라이버를로드하려고 시도하면 sqlanywhere에서 오류가 발생합니다. 이 응용 프로그램에서 전자가 포함될 때까지이 작동합니다.
여기 내 예제 코드입니다 :
const sqlanywhere = require('sqlanywhere');
const url = require('url');
const path = require('path');
const { app, BrowserWindow, Menu, Tray, ipcMain } = require('electron');
let conn = sqlanywhere.createConnection();
var conn_params = {
Host : 'localhost:2638',
UserId : 'user',
Password: 'password',
ConnectionPool: 'YES(MaxCached=10)'
};
conn.connect(conn_params, function(err) {
if (err) throw err;
conn.exec('SELECT * from mytable', function (err, result) {
if (err) throw err;
console.log(result[0]);
conn.disconnect();
})
});
let mainWindow;
app.on('ready',() => {
console.log("Started...");
// Create Window
mainWindow = new BrowserWindow({
width: 200,
height: 200
});
// Load HTML file into Window
mainWindow.loadURL(url.format({
pathname: path.join(__dirname, 'mainWindow.html'),
protocol: 'file:',
slashes: true
}));
});
발생 된 오류는 다음과 같습니다
"캐치되지 않는 예외 : 오류 : 'Win32에서'프로세스 아치 : 플랫폼 용 모듈을로드 할 수 없습니다 '64', and Version : 'v7.9.0'
Electron에서 sqlanywhere 패키지의 'require'문을 처리하는 방식이 문제를 일으키는 것으로 보입니다.
나는 위의 catch 블록을 확인하기 위해 두 CONSOLE.LOG 문을 추가 한// ***************************************************************************
// Copyright (c) 2017 SAP SE or an SAP affiliate company. All rights reserved.
// ***************************************************************************
var db = null;
var driver_file = "sqlanywhere"
var v = process.version;
var match = v.match('v([0-9]+)\.([0-9]+)\.[0-9]+');
driver_file += '_v' + match[1];
if(match[1]+0 == 0) {
driver_file += '_' + match[2];
}
try {
if(process.arch == "x64") {
db = require("./../bin64/" + driver_file);
} else if(process.arch == "ia32") {
db = require("./../bin32/" + driver_file);
} else {
throw new Error("Platform Not Supported");
}
} catch(err) {
try {
// Try finding natively compiled binaries
console.log("Error thrown"); // added by me
console.log("DB: " + db); // db is null
db = require("./../build/Release/sqlanywhere.node");
} catch(err) {
throw new Error("Could not load modules for Platform: '" +
process.platform + "', Process Arch: '" + process.arch +
"', and Version: '" + process.version +"'");
}
}
module.exports = db;
가 실행되고, 그것은로드 있어야한다 때 DB는이 시점에서 여전히 널 : sqlanywhere의하는 index.js입니다 x64 드라이버. 다시 말하지만, Electron가 관련 될 때까지 작동합니다.
사람이 어떤 통찰력 영원히 감사 할 것을 제공 할 수 있다면 전자가
db = require("./../bin64/" + driver_file);
와 가진 문제가 될 수 있습니다 보인다!
덕분에
감사합니다. 전자 재 구축을 사용하여이 문제를 해결할 수있었습니다. –