js中的parcel和全局变量

2024-04-05

我有一个简单的 HTML 文件,其中包含一些简单的 javascript 文件。没有框架,没有模块。有一个主 JS 文件和其他 JS 文件中的辅助函数。

当我将其作为静态站点打开时,一切正常。一个文件中的 JS 代码能够调用另一文件中定义的函数。

当我尝试包裹捆绑器时,将其指向index.html文件中,parcel 找到我所有的 JS 文件,并在开头添加一些内容,在文件名中附加一个哈希值,并修改我的 HTML 文件中的链接。一切都很棒。

然而,当我在浏览器中打开此页面时,结果发现我在一个 JS 文件中定义的代码无法看到其他 JS 文件中定义的函数,抛出ReferenceError: <func> is not defined。当我检查 HTML 页面中包含的 JS 脚本时,这些函数确实是在全局范围内定义的。这有多奇怪?


据我所知,当parcel进行转译时,它在文件顶部设置了一些可以用作全局变量的变量:

var globalObject =
    typeof globalThis !== 'undefined'
      ? globalThis
      : typeof self !== 'undefined'
      ? self
      : typeof window !== 'undefined'
      ? window
      : typeof global !== 'undefined'
      ? global
      : {};

如果您在执行操作时查看文件parcel watch您将在文件顶部看到它。

因此,基本上,如果您希望一个变量是全局变量,那么在您首先声明该变量的 javascript 文件中,您必须将其设置为将其附加到上面的任何一个全局变量。例如:

global.fruit =  'Mango';

or

window.fruit = 'Mango';

fruit现在成为窗口的全局变量,您可以从其他 JS 文件中的全局范围访问它after设置全局水果对象的文件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js中的parcel和全局变量 的相关文章

随机推荐

  • Rails 4:.save 不会更新现有记录的updated_at?

    我一直以为 save and save 将更新updated at现有记录列 这不是真的吗 如果是这样 那么我是否需要创建一个 before save 过滤器以在每次保存时更新它 今天是 6 月 18 日 Loading developme
  • 求解具有可压缩质量守恒的一维纳维斯托克斯问题(液压阻尼器)

    I would like to solve a 1D Navier equation on a cylindrical imposed tubes cartesian cordinates 流动沿 y 方向 右室压力 p1 和左室压力 p2
  • Cordova:找不到plugin.xml

    我正在尝试从我的 coordova 文件中删除此插件 但遇到了此问题 Error Cannot find plugin xml for plugin org apache cordova file transfer Please try a
  • 超出最大调用堆栈大小。在对话框中打开

    在我的项目中 我有一个对话框 显示两个按钮 确认和取消 操作 但是 当出现这种情况时 如果我移动或单击具有与我关联的功能的按钮 则会导致此错误 未捕获的范围错误 超出最大调用堆栈大小 这是显示对话框的函数 displayConfirmMes
  • 受保护的内部类在类内工作但不在类外工作

    我尝试了一些事情 想知道为什么会这样 假设我在命名空间 n 中有一个名为 A 的类 我试图创建受保护的内部类 B namespace n public class A public A protected internal class B
  • 使用 Mockito 动态返回值

    通常在编译时定义 Mockito 模拟的返回值 即静态地 MyClass myClass Mockito mock MyClass class when myClass myMethod thenReturn 0 100 200 有没有办法
  • 查找具有其他字符串的所有字符的子字符串的最小长度的算法

    我有两个字符串 字符串1 hello how are you 字符串2 olo 包括空格字符 Output lo ho hello ho你是谁 lo ho是唯一包含 string2 的所有字符的子字符串 任何人都可以为此提出一个好的算法 我
  • 什么是 AWT-Windows 线程?

    当我使用 AWT 时 在调用Toolkit getDefaultToolkit 我已经打印了程序中当前正在运行的线程 我想知道那是什么AWT Windows在后台运行的线程 它有什么作用以及为什么有6优先事项 另外 该行 Thread AW
  • 动态句子中的单词倒序

    我有几个这样的标签 a class classCover href 1 Comment a 我想颠倒一下单词的顺序 Comments 1 我的功能是这样的 但不起作用 classCover each function this text s
  • HSQLDB / Spring 单元测试不回滚

    我正在使用 Spring 的嵌入式数据库 默认数据库是 HSQLDB 来运行一些单元测试 我的情况如下
  • 无权在 mongodb 上查询 admin.system.namespaces

    我启动一个新的 mongo 实例 创建一个用户 对其进行授权 但是当我运行 show collections 时 系统说该 id 未授权 我不知道为什么 mongo admin MongoDB shell version 2 4 3 con
  • 将 Autofac 添加到 WPF MVVM 应用程序

    我似乎无法找到解决这个问题的方法 我已经看到了几个与此相关的问题 但没有一个真正给我解决方案 我对 Autofac 完全陌生 并没有真正做过太多 WPF MVVM 但了解基础知识 我有一个 WPF 应用程序 使用 ModernUI for
  • ASP.NET Core MVC 相当于启动操作特定页面

    In ASP NET Webforms or ASP NET MVC项目中 我可以在按F5进行调试时选择浏览器中正在调用的页面 路由 如下图所示 相当于什么ASP NET Core MVC 我在用着IIS Express with SSL用
  • 错误:如果没有列“date_time”(在分区中使用),则无法创建唯一索引

    我刚开始使用时间刻度数据库 https www timescale com 与 postgresql 我有一个名为storage db其中包含一个名为day ahead prices 安装 timescaledb 后 我正在关注从同一个 p
  • angularjs从json文件中获取ng-repeat数据非常慢

    我有一个 json 文件 其中包含大约 8000 个联系人 使用 ng repeat 使用 angularjs 获取所有数据需要很长时间 有解决办法吗 检索如此大的记录时 您不能期望有很高的速度 您可以使用以下方法优化 ng repeat
  • 我的线程可以帮助操作系统决定何时将其上下文切换吗?

    我正在 Linux 上用 C 开发一个线程应用程序 它试图实现实时 根据心跳执行操作 或者尽可能接近实时 在实践中 我发现操作系统正在交换我的线程 并导致切换时延迟长达十分之一秒 从而导致心跳不规则 有没有一种方法可以让我的线程向操作系统暗
  • 在 Visual Studio Code 中调试 C++ 时如何读取输入?

    我在用着VSCode用于调试我的CPP程序在MacOSX 我有2个程序 Program1 int main string a a a a b cout lt
  • 如何:仅 100% 高度表滚动 tbody

    是否可以使用 CSS 滚动 100 高度表格的内容而不是标题 并且仅将滚动条显示到 tbody 内容的一侧而不是标题行 谢谢 我希望现在还不算太晚 你还活着 从那时起事情已经有了很大的改善 您可以使用 table display inlin
  • 如何在仅标头库中拥有静态数据成员? [复制]

    这个问题在这里已经有答案了 在非模板化库类中拥有静态成员的最佳方法是什么 而不将定义成员的负担强加给类用户 假设我想提供这个课程 class i want a static member static expensive resource
  • js中的parcel和全局变量

    我有一个简单的 HTML 文件 其中包含一些简单的 javascript 文件 没有框架 没有模块 有一个主 JS 文件和其他 JS 文件中的辅助函数 当我将其作为静态站点打开时 一切正常 一个文件中的 JS 代码能够调用另一文件中定义的函