NodeJS-Electron-msnodesqlv8-在msnodesqlv8中加载二进制文件时出错

时间:2018-10-06 17:19:19

标签: node.js electron

上下文:我正在构建一个电子应用程序,该应用程序正在查询sql服务器(远程服务器)以从表中获取数据。我正在使用mssqlnodev8。

错误:当我使用npm start启动电子应用程序时,出现以下错误-

  

未捕获的错误:没有二进制文件成功加载。是你的节点   最新的4、5、6、7、8或9版本?       在failIfNoBinaryExported时失败(C:\ Users \ t9sau2 \ Documents \ NodeJs \ Renewalverification \ node_modules \ msnodesqlv8 \ lib \ bootstrap.js:63)       位于Object.liveLoad(C:\ Users \ t9sau2 \ Documents \ NodeJs \ Renewalverification \ node_modules \ msnodesqlv8 \ lib \ bootstrap.js:50)       在对象。 (C:\ Users \ t9sau2 \ Documents \ NodeJs \ Renewalverification \ node_modules \ msnodesqlv8 \ lib \ bootstrap.js:79)       在对象。 (C:\ Users \ t9sau2 \ Documents \ NodeJs \ Renewalverification \ node_modules \ msnodesqlv8 \ lib \ bootstrap.js:81)       在Module._compile(内部/模块/cjs/loader.js:711)       在Object.Module._extensions..js(internal / modules / cjs / loader.js:722)       在Module.load(internal / modules / cjs / loader.js:620)       在tryModuleLoad(内部/模块/cjs/loader.js:559)       在Function.Module._load(internal / modules / cjs / loader.js:551)       在Module.require(internal / modules / cjs / loader.js:658)

有关电子应用的其他信息- 我正在为我的UI使用引导程序。根据电子常见问题解答网站,我的条目html文件中包含以下代码

<script>
  window.nodeRequire = require;
  delete window.require;
  delete window.exports;
  delete window.module;
</script>  

除电子(index.js-入口点)以外的所有模块均通过

导入
  

nodeRequire

到目前为止已完成分析-

  1. 用于连接数据库和获取记录的javascript逻辑位于 单独的js文件。当我使用“ node file.js”执行文件时,它 可以正常工作并返回记录。
  2. 节点版本为v9.8.0。电子版本为3.0.2
  3. 我分析了node_modules \ msnodesqlv8 \ lib \ bootstrap.js中的bootstrap.js文件,行号63。它追溯到以下代码

    var files = require('fs').readdirSync(binaryDir)
    

    我也更改了nodeRequire,但是没有用。

  4. 我已经在github中检查了类似的问题,但是没有一个解决方案。

已更新 我在msnodesqlv8中分析了bootstrap.js。这些是不同的错误消息

  

导出二进制错误时出错:   \?\ C:\ Users \ t9sau2 \ Documents \ NodeJs \ Renewalverification \ node_modules \ msnodesqlv8 \ lib \ bin \ sqlserverv8.electron.v2.0.4.ia32.node   不是有效的Win32应用程序。   \?\ C:\ Users \ t9sau2 \ Documents \ NodeJs \ Renewalverification \ node_modules \ msnodesqlv8 \ lib \ bin \ sqlserverv8.electron.v2.0.4.ia32.node       在process.module。(匿名函数)[作为dlopen](ELECTRON_ASAR.js:166:20)       在Object.Module._extensions..node(internal / modules / cjs / loader.js:740)       在Object.module。(匿名函数)[作为.node](ELECTRON_ASAR.js:166:20)       在Module.load(internal / modules / cjs / loader.js:620)       在tryModuleLoad(内部/模块/cjs/loader.js:559)       在Function.Module._load(internal / modules / cjs / loader.js:551)       在Module.require(internal / modules / cjs / loader.js:658)       在要求时(internal / modules / cjs / helpers.js:20)       在tryToExportBinary(C:\ Users \ t9sau2 \ Documents \ NodeJs \ Renewalverification \ node_modules \ msnodesqlv8 \ lib \ bootstrap.js:58)       在C:\ Users \ t9sau2 \ Documents \ NodeJs \ Renewalverification \ node_modules \ msnodesqlv8 \ lib \ bootstrap.js:48

     

导出二进制错误时出错:模块   '\?\ C:\ Users \ t9sau2 \ Documents \ NodeJs \ Renewalverification \ node_modules \ msnodesqlv8 \ lib \ bin \ sqlserverv8.electron.v2.0.4.x64.node'   使用不同的Node.js版本编译   NODE_MODULE_VERSION 57.此版本的Node.js需要   NODE_MODULE_VERSION64。请尝试重新编译或重新安装   模块(例如,使用npm rebuildnpm install)。       在process.module。(匿名函数)[作为dlopen](ELECTRON_ASAR.js:166:20)       在Object.Module._extensions..node(internal / modules / cjs / loader.js:740)       在Object.module。(匿名函数)[作为.node](ELECTRON_ASAR.js:166:20)       在Module.load(internal / modules / cjs / loader.js:620)       在tryModuleLoad(内部/模块/cjs/loader.js:559)       在Function.Module._load(internal / modules / cjs / loader.js:551)       在Module.require(internal / modules / cjs / loader.js:658)       在要求时(internal / modules / cjs / helpers.js:20)       在tryToExportBinary(C:\ Users \ t9sau2 \ Documents \ NodeJs \ Renewalverification \ node_modules \ msnodesqlv8 \ lib \ bootstrap.js:58)       在C:\ Users \ t9sau2 \ Documents \ NodeJs \ Renewalverification \ node_modules \ msnodesqlv8 \ lib \ bootstrap.js:48

     

导出二进制错误时出错:   \?\ C:\ Users \ t9sau2 \ Documents \ NodeJs \ Renewalverification \ node_modules \ msnodesqlv8 \ lib \ bin \ sqlserverv8.node.v10.8.0.ia32.node   不是有效的Win32应用程序。   \?\ C:\ Users \ t9sau2 \ Documents \ NodeJs \ Renewalverification \ node_modules \ msnodesqlv8 \ lib \ bin \ sqlserverv8.node.v10.8.0.ia32.node       在process.module。(匿名函数)[作为dlopen](ELECTRON_ASAR.js:166:20)       在Object.Module._extensions..node(internal / modules / cjs / loader.js:740)       在Object.module。(匿名函数)[作为.node](ELECTRON_ASAR.js:166:20)       在Module.load(internal / modules / cjs / loader.js:620)       在tryModuleLoad(内部/模块/cjs/loader.js:559)       在Function.Module._load(internal / modules / cjs / loader.js:551)       在Module.require(internal / modules / cjs / loader.js:658)       在要求时(internal / modules / cjs / helpers.js:20)       在tryToExportBinary(C:\ Users \ t9sau2 \ Documents \ NodeJs \ Renewalverification \ node_modules \ msnodesqlv8 \ lib \ bootstrap.js:58)       在C:\ Users \ t9sau2 \ Documents \ NodeJs \ Renewalverification \ node_modules \ msnodesqlv8 \ lib \ bootstrap.js:48

1 个答案:

答案 0 :(得分:0)

我在msnodesqlv8的github报告中提出了这个问题。所有者更新了版本,从而解决了该问题。 github链接-https://github.com/TimelordUK/node-sqlserver-v8/issues/80