19

首先我是nodejs的新手,其次是我的问题。如何在 html 中加载的 js 中包含 nodejs net 模块?

我的 js 文件看起来像这样。

net = require('net');
var client = net.createConnection(8000, '192.168.15.59');
client.on('connect',function(){
console.log('Connected To Server');
});
client.on('data',function(data){
console.log('Incoming data:; ' + data);
});

我的html文件在下面

<html>
<head>
<script type="text/javascript" src="sample.js"></script>
<script type="text/javascript">
function displaymessage(message)
{
alert(message);
client.write(message, encoding='utf8')
}
</script>
</head>

<body>
<form>
<input type="text" id="msg"></input>
<input type="button" value="Click me!" onclick="displaymessage(document.getElementById('msg').value)" />
</form>
</body>
</html>

当我在浏览器中运行 HTML 文件时,出现以下错误

未捕获的 ReferenceError:未定义要求

而如果我使用命令行直接在nodejs中运行js文件(比如这个“node sample.js”),那么它工作正常。

提前致谢。

4

3 回答 3

18

NodeJS runs on the server. Script inside HTML files runs on the client. You don't include server code on the client. Instead, you send messages to the server code from the client, and interpret the results. So the standard way to do this is to define a resource on the server that generates the content or data you want to generate, and to retrieve that content or data from the client, using just normal page loading or "ajax" (although these days, most people don't use the "x" [XML] in "ajax" [some still do], they use JSON, text, or HTML).

于 2012-04-15T21:46:19.830 回答
5

澄清@TJCrowder 在评论中所说的内容:您尝试做的事情是不可能的。

NodeJS 是一个服务器端框架。您在 NodeJS 中编写的 Javascript 在服务器上执行。您为 HTML 页面编写的 Javascript 在客户端上执行。客户端和服务器不能直接调用对方的方法。这就是 AJAX 和其他异步客户端-服务器通信技术的用途。

于 2012-04-15T21:44:27.033 回答
1

之所以“require is not defined”是因为“require”是node.js的关键字,但不是浏览器的关键字。

Node.js 是 javascript 的虚拟机(或运行上下文),浏览器也是 javascript 的虚拟机。但它们有很大的不同。您不能在另一个虚拟机中使用一个虚拟机支持的关键字,就像您可以在 Windows 和 Linux 上使用 C/C++ 一样,但是有许多库要么仅在 Linux 中,要么仅在 Windows 中。

于 2012-04-24T04:17:11.847 回答