提问人:Volodymyr RT 提问时间:11/7/2023 最后编辑:Volodymyr RT 更新时间:11/8/2023 访问量:39
Null 到小写在本地失败,但在暂存时失败。帮我理解?
Null to lowercase fails on local, but not on staging. Help me to understand?
问:
面对我无法理解的问题,它让我心痒痒的。我有一个代码,运行了 3 周。然后,无论出于何种原因,它今天开始崩溃并显示错误。这在技术上是正确的行为。
问题在于,使用相同的数据和相同的代码,它可以正常工作,在暂存环境中发生零崩溃。Unit.title 在暂存和本地的多个项目中为 null。它以前在我当地的运行良好。
我已经隐藏了我所有的更改,并像登台一样切换到分支 - 仍然继续崩溃。
如何追踪差异?如何检查?其他开发人员没有它。
代码本身非常简单:
let costumeTitle = siteMap[data][unit].title;
// if(!costumeTitle){
// console.log('unit', unit);
// console.log(data);
// costumeTitle = 'Broken title!'
// }
const lowerCaseTitle = costumeTitle.toLowerCase();
在某些情况下,title 确实是 null。它在 React 中抛出错误是正确的。但为什么是现在,为什么不是以前?3周,一切都很好。在 Stagin 上,数据是相同的。并且也有空作为标题,但它有效!
澄清一下:
IN 暂存和本地数据是相同的。它们都具有 unit.title、等于 null 或 undefined。
答:
在某些情况下,title 确实是 null。
然后会抛出,因为你无法访问 上的属性。costumeTitle.toLowerCase()
toLowerCase
null
但为什么是现在,为什么不是以前?
因为它以前从未出现过,所以巧合的是,当该代码运行时,它总是非。这是您不会收到错误的唯一原因。title
null
旁注:如果要设置为 when is ,可以使用可选的链接 () 和无效合并 () 来实现:lowerCaseTitle
null
costumeTitle
null
?.
??
const lowerCaseTitle = costumeTitle?.toLowerCase() ?? null;
// ^−− will be a string if costumeTitle is string, or null if
// costumeTitle is null (or undefined)
如果 to be 而不是 when is 是可以的,则不需要无效合并:lowerCaseTitle
undefined
null
costumeTitle
null
const lowerCaseTitle = costumeTitle?.toLowerCase();
// ^−− will be a string if costumeTitle is string, or undefined
// if costumeTitle is null (or undefined)
评论
costumeTitle.toLowerCase()
costumeTitle
null
null
下一个:潜在的 null 应从警告
评论
null
"null"