如何在 <script> 内的 src 文件中要求 js 文件?

Posted

技术标签:

【中文标题】如何在 <script> 内的 src 文件中要求 js 文件?【英文标题】:how to require js file in a src file inside <script>? 【发布时间】:2022-01-01 03:06:33 【问题描述】:

我希望这很清楚,我需要在 html 文件中导入一个 JS 文件。所以我使用src 属性如下:

<script src="my/js/file/1.js">
<!-- Some JS script here -->
</script>

但是有一件事...在我的 JS 文件的第 1 行中,有一个 require("another/file.js")...所以我的浏览器控制台出现错误:require is not defined。如何解决?

编辑

我会尽量说清楚:

我有 3 个文件,1 个 HTML 和 2 个 JS

上面的脚本标签在我的 html 文件中。 在 src 文件中,我需要使用require("my/js/file/2.js" 导入第二个 JS 文件 如果我不使用src 属性,它就可以工作

但是当我添加 src 属性时,我在控制台中收到错误消息

【问题讨论】:

这能回答你的问题吗? How do I include a javascript file in another JavaScript file? 看到这个答案:***.com/questions/19059580/… 你不能同时添加带有src的脚本并且在脚本标签中包含代码。 @IMSoP 不是真的,或者我错过了 smthg...@War10ck 这与第一个文件无关,使用我的&lt;script src="path/to.js"&gt;,我可以获得第一个 JS 文件,但这个文件也有一个require,这是 pb @Andy 好吧,看起来它正在工作,但即使这样拆分它:html &lt;script type="module" src="file.js"&gt;&lt;/script&gt; &lt;script&gt; &lt;!-- my code here --&gt; &lt;/script&gt; 我还有 pb 【参考方案1】:

require 是 JS 环境提供的内置函数,支持几种不同类型的模块,因此如何将 JS 文件加载到浏览器中取决于编写要使用的模块系统类型。

最可能的情况是:

这是一个 AMD 模块(非常不太可能在 2021 年出现)在这种情况下,您可以使用 RequireJS 加载它 它是一个 CommonJS 模块,它依赖于 Node.js 特定的 API(在这种情况下,它不能在浏览器中运行并在浏览器中与之交互,您需要将其构建到 Web 服务中并生成 HTTP对它的请求(例如通过 Ajax))。一些依赖于 Node.js 特定 API 的东西包括: 向未授予浏览器 JS 使用 CORS 访问权限的站点发出 HTTP 请求 非 HTTP 网络请求(如直接访问 mysql 数据库) 从表示为字符串的文件路径读取(或执行任何操作)文件(而不是从&lt;input type="file"&gt; 读取文件) 产生其他进程 它是一个 CommonJS 模块,不依赖于特定于 Node.js 的 API,您可以使用捆绑工具(例如 Webpack 或 Parcel)将其转换为在浏览器中运行。

在您开始尝试实施其中一种解决方案之前,找出其中哪些选项(所有这些都需要一些您不想浪费的时间和精力)。 p>

阅读模块的文档通常会告诉你。如果你从 NPM 获得它并且它没有提到与浏览器兼容,那么它可能只是 Node.js。

【讨论】:

我不会撒谎,这是一个比我更专业的人做的项目,我真的不知道不同类型的模块。我认为这是一个 CommonJS 模块,但我不能 100% 确定它是否依赖于特定于 Node.js 的 API 尝试阅读它的文档。 我会在我在家的时候阅读它,为我自己的,谢谢 ^^ 有人帮我解决我的问题,我无法说出我们所做的 100% SO,但这与您的答案相似。因此,我会将您的答案标记为正确。如果不显示一些私人内容,我无法解释我们是如何做的,所以我很抱歉。【参考方案2】:

这可能是因为require() 不是标准 JavaScript API 的一部分。您的代码可能正在使用 Nodejs,这是可能使用 require() 的地方。此外,为了让您选择一个src 文件,您可能还需要包含type,即&lt;script type="text/javascript"&gt;

【讨论】:

以上是关于如何在 <script> 内的 src 文件中要求 js 文件?的主要内容,如果未能解决你的问题,请参考以下文章

html获取iframe内的数据

JavaScript基础学习目录

如何在 <script> 标记中的 html 上使用 json 脚本并在 <img src=???/> 中填充数据

如何从javascript运行<script src =>标签[重复]

如何在html页面动态加载js文件

jQuery模板内的<script>标签