【问题标题】:Getting an InvalidCharacterError when running app through UWP and Visual Studio通过 UWP 和 Visual Studio 运行应用程序时出现 InvalidCharacterError
【发布时间】:2019-10-15 09:32:57
【问题描述】:

这段代码是通过BuckleScript -> JS生成的,我看不到无效字符在哪里。

但是,我认为这可能是 UWP 不允许将内部主机作为一项功能访问的问题,因此会引发错误。

我已经添加了一个环回异常,添加了 SID 和那个。我已经运行 CheckNetIsolation LoopbackExempt -is -n=packageFamilyName。

function getJidFromUrl(url) {
  var match = url[
  /* path */
  0];

  if (match && !match[1]) {
    var jidString = atob(match[0]); //error line here
    return toJid(jidString);
  }
}

index.bs.js 中第 * 行第 5 列未处理的异常

0x800a139e - JavaScript 运行时错误:InvalidCharacterError

【问题讨论】:

  • 你是在 UWP 的 WebView 还是 Winjs 中运行这段代码?您的参数url 是字符串,您捕获第一个字符名称match,现在您的match 是一个字符。 atob 函数无法运行,因为此字符未编码。您可以尝试在浏览器中运行此代码以查看发生了什么。
  • 我都没有运行,只是一个空白的 JS 通用 Windows 应用程序
  • 所以,这个问题是一个纯 JavaScript 问题,它不是 UWP 特有的。其实我已经解释了原因。 Your parameter url is string, you catch the first character names match, now your match is a char. atob function can't run because this char not encode.
  • 我得到的第一个匹配[0],是“index.html”不是一个有效的 URI,我不确定这是从哪里来的,可能是你输入的起始页,或内容 URI。
  • 我不明白为什么match[0] 是'index.html',它应该是一个字符。请提供minimal reproducible example 以获取更多诊断信息。

标签: javascript uwp invalid-characters


【解决方案1】:

也许你打算写

atob(match);

而不是

atob(match[0]);

考虑到你在做

var match = url[0];

【讨论】:

  • 我认为您正在向 atob 发送它不支持的内容。 url到底是什么,你为什么要url[0]
  • url是一个标准的url字符串,如blahblah.com/userjid,原函数接受url,使用reasonreact.router将url分解为path、search、hash,然后使用atob()得到jidstring。这是 ReasonReact 中的原始函数let getJidFromUrl = url => { open ReasonReactRouter; switch(url.path) { | [x] => { let jidString = atob(x); XMPP.Jid.toJid(Some(jidString)); } | _ => None }; }; 老实说,我不知道 buckleScript 编译器在做什么。
猜你喜欢
  • 2015-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多