Node.js中for-in循环部署后报ReferenceError:string未定义问题求助
解决Node.js for-in循环部署时ReferenceError: string is not defined的问题
问题出在你for-in循环里的变量string没有声明:
// 错误写法:string未用let/const声明 for ( string in queue) { ... }
本地运行正常是因为本地Node环境可能处于非严格模式,未声明的变量会被自动当作全局变量处理;但部署环境大概率开启了严格模式(比如代码被打包工具开启严格模式,或者服务端配置强制严格模式),严格模式下不允许隐式创建全局变量,因此抛出ReferenceError: string is not defined。
修复方案很简单,给循环变量加上let或const声明即可:
const queue = { mobilize : 'test', mobileTurnOn: 'mobileTurnOn', pushAdminNotif: 'pushAdminNotif', diffLocationAlert: 'diffLocationAlert' }; // 用const声明循环变量(每次迭代会重新绑定) for (const string in queue) { console.log(string, "key") console.log(queue[string], "value") };
另外建议日常开发中始终开启严格模式(在文件顶部加'use strict';),提前发现这类问题,避免本地和部署环境的行为差异。
内容的提问来源于stack exchange,提问作者Muzani Pamasarsa
相关产品推荐
相关产品推荐

