【问题标题】:How can I set a global variable inside a function using the Parcel Bundler?如何使用 Parcel Bundler 在函数内设置全局变量?
【发布时间】:2021-10-27 00:42:37
【问题描述】:
var myNum = 32;

function randomizer(limit) {
    let myNum = Math.floor(Math.random() * limit);

    console.log("myNum is " + myNum);
    console.log("Global myNum is " + window.myNum);
    if (window.myNum == undefined) {
        console.log("Can't access global object when using parcel bundler");
    }

    return myNum;
}

我收到一条控制台消息说Global myNum is undefined 在我的package.json 文件中,我的脚本行读取;

"scripts": {
    "dev": "parcel src/index.html",
    "build": "parcel build src/index.html"
  }

在命令行我使用npm run dev

【问题讨论】:

  • 我也尝试使用数组表示法来访问全局窗口对象,即; console.log("Global myNum is " + window["myNum"];

标签: javascript global parceljs


【解决方案1】:

这似乎是包裹中的a bug

更新 (12/2021): 此错误现已在包裹版本 2.0.0-nightly.939 及更高版本中得到修复。应该会在2.0.1之后的下一个稳定版parcel中发布。

根本原因非常具体,因此您现在或许可以解决它。仅当您隐藏全局变量时才会发生这种情况 - 例如你有var myNum = 32,然后在函数范围内重新 - 声明一个具有相同名称的变量(例如let myNum = <anything else>)。所以如果你可以重构你的代码来避免阴影,你就可以避免这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    相关资源
    最近更新 更多