【问题标题】:javascript require doesn't work inside htmljavascript 要求在 html 中不起作用
【发布时间】:2018-10-05 06:27:35
【问题描述】:

我正在编写涉及 js 代码的 html 代码。下面是一个简单的例子:

<!DOCTYPE html PUBLIC >
<html>
<body>
<h2>Use JavaScript to Change Text</h2>
<p>This example writes "Hello JavaScript!" into an HTML element with id="demo":</p>
<p id="demo"></p>
<script>
    var net     = require('net');
    var sleep   = require('sleep');
    var element = document.getElementById("demo");
    element.innerHTML = "Hello JavaScript!";
    sleep(1)
</script> 

不幸的是“你好 JavaScript!”当我用浏览器浏览上述文件时没有出现。查看调试控制台内部,我可以看到以下消息:

ReferenceError: require is not defined

所以似乎在 html 代码中没有定义 require ,但我编写了一个小的 test.js 文件,如下所示:

var net = require('net');
var sleep = require('sleep');
sleep.sleep(1)

然后我运行它

node test.js.

没有错误,一切正常,require 可用,sleep 和 net 也可用。为什么html文件里面的代码不起作用?

【问题讨论】:

标签: javascript html requirejs require


【解决方案1】:

Javascript 与 node.js 不同

require() 不是 JavaScript 标准的一部分,不被开箱即用的浏览器支持,它是 node.js 模块系统。

您可能需要直接包含模块;某些模块可能无法在浏览器沙箱上下文中运行。

另外,http://browserify.org/ 之类的工具也可能有用。

【讨论】:

    【解决方案2】:

    您获得ReferenceError: require is not defined 的原因是因为您的html 页面中没有任何地方包含Require。 Require 不随您的标准 JavaScript 库一起提供。您必须在页面上包含该文件,以便加载和使用它。

    这可以通过在&lt;head&gt;&lt;body&gt; 标签中简单地添加&lt;script src="myJS.js"&gt;&lt;/script&gt; 来完成。 myJS.js 文件当然会被 require.js 文件替换。

    使用 node 运行它的原因是因为 node 已经有自己的模块加载器。

    【讨论】:

      猜你喜欢
      • 2020-07-17
      • 2016-12-13
      • 2018-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-25
      • 1970-01-01
      • 2018-10-20
      相关资源
      最近更新 更多