javascript - 如何使用 Parcel Bundler 在函数内设置全局变量?
问题描述
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
解决方案
这似乎是Parcel 中的一个错误。
更新 (12/2021):此错误现已在包裹版本2.0.0-nightly.939
及更高版本中修复。它应该在 parcel 之后的下一个稳定版本中发布2.0.1
。
根本原因非常具体,因此您现在可能可以解决它。仅当您隐藏全局变量时才会发生这种情况-例如,您拥有var myNum = 32
,然后在函数范围内重新声明具有相同名称的 a 变量(例如let myNum = <anything else>
)。所以如果你可以重构你的代码来避免阴影,你就可以避免这个问题。
推荐阅读
- mysql - mysql无法杀死进程:未知的线程ID
- redirect - IIS 批量旧版重定向
- xml - 如何防止 Drupal XML 注入
- javascript - 如何使用 NextJS 在服务器端呈现静态页面并做出反应
- amazon-web-services - AWS Route53 使用单个 SSL 证书路由到两个 Elastic Beanstalk 网站?
- c# - 将列表框中所选项目的内容显示到文本框中
- amazon-cloudwatch - 使用 CDK 从 AWS Cloudwatch 日志流中提取值
- python - 将 Django 应用程序部署到 Heroku 时出现运行时错误
- javascript - 从除其他两个 div 之外的所有 div 中删除类
- python - Python QT - 没有名为“ui.mainwindow”的模块