Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 节点serialport不适用于Electron_Node.js_Arduino_Serial Port_Node Gyp_Electron - Fatal编程技术网

Node.js 节点serialport不适用于Electron

Node.js 节点serialport不适用于Electron,node.js,arduino,serial-port,node-gyp,electron,Node.js,Arduino,Serial Port,Node Gyp,Electron,我的任务是构建一个HTML5桌面应用程序,它使用串行端口,因为我在COM端口的另一端有一个arduino 我安装了electron预构建和serialport两个包(我在package.json中指定了它们)。 在我的主网页中,我包含了main.js,并且在那里我试图要求serialport包,但是我得到了以下错误: 未捕获错误:找不到模块 'D:\Projects\arduino\HTMLPresentation\node\u modules\serialport\build\serialpo

我的任务是构建一个HTML5桌面应用程序,它使用串行端口,因为我在COM端口的另一端有一个arduino

我安装了
electron预构建
serialport
两个包(我在
package.json
中指定了它们)。 在我的主网页中,我包含了
main.js
,并且在那里我试图要求
serialport
包,但是我得到了以下错误:

未捕获错误:找不到模块 'D:\Projects\arduino\HTMLPresentation\node\u modules\serialport\build\serialport\v1.7.4\Release\node-v45-win32-x64\serialport.node'

我已经阅读了一些关于这个问题的QA主题(一些带有
节点gyp
的abracadabras),但是注意对我来说是有效的:在Windows8.1和Ubuntu 15.04上。我不知道如何为electron采用serialport包。

用法:此可执行文件根据electron项目使用的io.js版本重建本机io.js模块。这允许您在Electron应用程序中使用本机io.js模块,而无需与io.js的系统版本完全匹配

npm install --save-dev electron-rebuild

# Every time you run "npm install", run this
./node_modules/.bin/electron-rebuild

# On Windows if you have trouble, try:
.\node_modules\.bin\electron-rebuild.cmd

这就是你解决问题的方法

通过在具有管理员访问权限的powershell中运行,在计算机中安装windows生成工具

或者npm--将python添加到path='true'--调试安装--全局windows构建工具

set PYTHON帮助您检查其设置是否正确

这还不够,请在项目文件中全局安装

我们必须重建serialport才能使用electron。为此,我们需要>安装电子重建:

最后一步是再次在应用程序的root>目录中运行electron rebuild:

导入并在electron vue项目中使用


const sp=require('serialport')
导出默认值{
名称:'登录页',
方法:{},
创建(){
sp.list(功能(错误,端口){
如果(错误){
console.log(错误)
}否则{
console.log(端口)
}
})
}
}
我的环境:

Vue.js: 2.6.10
Electron: 2.0.18
Node: 8.9.3
Platform: linux
如果将Eletron与Vue.js一起使用,则需要重建serialport模块,执行以下操作:

npm install electron-rebuild --save-dev
在此之后,您可以添加package.json>部分“scripts”,另一行内容是:

"rebuild": "electron-rebuild -f -w serialport"
您可以使用terminal命令重建模块

npm run rebuild

现在应该导入serialport模块,并按预期工作。祝你好运

您不是第一个遇到本机模块问题的人。你只需要根据电子头来构建它!怎么用?我看到的所有手册都只适用于以前的版本。你看过吗?我以前看过,但这次你给我写了,我再试了一次。不,它不起作用。同样,它会产生错误。比如说,您是否正确设置了
节点路径?
 ./node_modules/.bin/electron-rebuild
<script>     
  const sp = require('serialport')
  export default {
    name: 'landing-page',
    methods: {},
    created () {
      sp.list(function (error, ports) {
        if (error) {
          console.log(error)
        } else {
          console.log(ports)
        }
      })
    }
  }
</script>
Vue.js: 2.6.10
Electron: 2.0.18
Node: 8.9.3
Platform: linux
npm install electron-rebuild --save-dev
"rebuild": "electron-rebuild -f -w serialport"
npm run rebuild