gpt4 book ai didi

javascript - 如何使用html按钮执行 Node 功能

转载 作者:行者123 更新时间:2023-12-03 05:14:56 27 4
gpt4 key购买 nike

我是nodejs的新手,我想使用node写入串行端口,但现在我希望它由按钮触发。数据来自文本框。当我在控制台/终端中运行我的 Node 脚本时,它运行良好。但无法通过网页中的按钮来做到这一点。这是我嵌入html的nodejs

<!DOCTYPE html>
<html>
<head>
<title>Node x HTML</title>
</head>
<body>

<script>
function write_serial()
{
var serialport = require("serialport");
var SerialPort = serialport.SerialPort;

var sp = new SerialPort("/dev/ttyACM0", {
baudrate: 9600,
parser: serialport.parsers.readline("\n")
});

var text = document.getElementById("textbox1").value;

sp.on('open', function()
{
sp.on('data', function (data)
{
sp.write(name);
});
});
}

</script>

<Input Type = "text" id = "textbox1" >
<BR>
<br><button onclick="write_serial();" href="javascript:;">Go!</button>
</body>
</html>

这是我打开页面控制台(F12)时遇到的错误

ReferenceError: require is not defined

预先感谢您的帮助。 :)

最佳答案

Node.js是一个托管环境,可以执行JS并提供Node.js特定的API。浏览器是一个不同的托管环境,具有不同的 API。不能在浏览器中使用Node特定的API,使用Node API的JS会导致浏览器出错。

例如,您的脚本正在使用全局 require 函数,该函数在浏览器 API 中不可用。这就是为什么:

ReferenceError: require is not defined

相反,您的脚本也无法在 Node 上执行,因为它使用浏览器 API:

document.getElementById("textbox1")

您已在一个脚本中混合了来自不同环境的 API。

但是,如果您的 JS 脚本不使用 Node 或浏览器特定的 API,则它可以在 Node 和浏览器中执行而不会出现错误。但您的脚本并非如此。

问题的解决方案可以是将脚本拆分为两个单独的脚本,一个在浏览器中运行,另一个在 Node.js 中运行,并使用 XMLHttpRequest 在它们之间交换数据。 .

关于javascript - 如何使用html按钮执行 Node 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41647971/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com