【问题标题】:How to include nodejs modules in html files?如何在 html 文件中包含 nodejs 模块?
【发布时间】:2023-03-29 11:15:01
【问题描述】:

首先我是 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 文件时,出现以下错误

Uncaught ReferenceError: require is not defined

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

提前致谢。

【问题讨论】:

  • NodeJS 在 服务器 上运行。 HTML 文件中的脚本在 client 上运行。您没有在客户端上包含服务器代码。相反,您将消息从客户端发送到服务器代码,并解释结果。

标签: javascript node.js require


【解决方案1】:

NodeJS 在服务器 上运行。 HTML 文件中的脚本在 客户端 上运行。您没有在客户端上包含服务器代码。相反,您从客户端向服务器代码发送消息,并解释结果。因此,执行此操作的标准方法是在服务器上定义一个资源,该资源生成您想要生成的内容或数据,并从客户端检索该内容或数据,仅使用正常页面加载或“ajax”(尽管现在,大多数人不在“ajax”中使用“x”[XML] [有些人仍然使用],他们使用JSON、文本或 HTML)。

【讨论】:

  • 您能否提供任何此类示例的链接,我可以在其中找到服务器/客户端之间的此类通信
  • @FarooqArshed:很难在不被 ajax 示例绊倒的情况下进行与 Web 编程相关的搜索。为您挑选它们实际上是一种伤害。
  • @tj-crowder 如果您有一个要在后端(通过 node.js)和前端(在 html 中使用脚本)使用的模块,您不想维护两个版本——您只想为这两种情况使用一个 .js 文件。问题是节点版本有一个导出/需要触发客户端代码错误。见this question
  • @wcochran:我并没有真正看到这与这里有什么关系,但是是的,完全同意不做多个版本。因此,您可以使用提供浏览器和 Node 兼容性的几个 AMD systems 中的任何一个。
  • 服务器解析 html (php),我不明白为什么它不能解释包含的 javascript 服务器端。您甚至可以在将 dom 发送到客户端之前修改这样的服务器脚本。没有这样的解决方案吗?
【解决方案2】:

澄清@T.J.Crowder 在评论中所说的:你试图做的事情是不可能的。

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

【讨论】:

  • 如果您能提供任何此类示例的链接,我将在其中找到服务器/客户端之间的此类通信,我将不胜感激。
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-15
    • 2014-05-16
    • 1970-01-01
    • 2019-08-16
    • 2016-02-05
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多