【问题标题】:Getting error JSON.stringify()ing argument: TypeError: JSON.stringify cannot serialize cyclic structures in IOS simulator获取错误 JSON.stringify()ing 参数:TypeError: JSON.stringify 无法在 IOS 模拟器中序列化循环结构
【发布时间】:2013-11-21 05:45:35
【问题描述】:

我正在为我的客户开发一个演示应用程序。此演示应用程序的目的是展示 Worklight Hybrid 应用程序可以在所有环境中运行。我的演示应用程序在 Android Emulator 中运行良好,但是当我将 Iphone 环境文件夹中 Package 文件夹中的 zip 文件传输到具有 XCODE 5.0 的 MAC 系统并尝试运行该应用程序时,我收到此错误 -

"error JSON.stringify()ing argument: TypeError: JSON.stringify cannot serialize cyclic structures"

我正在使用 Worklight V6 和其中提供的默认 dojo 版本。我在网上搜索,发现很少有人也在为此苦苦挣扎。这里报告了一个例子-

http://dojo-toolkit.33424.n3.nabble.com/ERROR-error-JSON-stringify-ing-argument-TypeError-JSON-stringify-cannot-serialize-cyclic-structures-td3996156.html

谁能告诉我这个错误的根本原因是什么?似乎问题出在模拟器或worklight中使用的cordova插件版本上。有什么解决方法吗?

这是我的 XCode 日志-

   2013-11-17 22:08:02.290 KaiserTestApp[6396:a0b] ***TeaLeaf Library Version***:      8.8.1.56 
   2013-11-17 22:08:03.002 KaiserTestApp[6396:a0b] Application windows are expected to  have a root view controller at the end of application launch 
   2013-11-17 22:08:04.129 KaiserTestApp[6396:3e07] Web resources integrity test is disabled. 
   2013-11-17 22:08:04.134 KaiserTestApp[6396:a0b] Multi-tasking -> Device: YES, App: YES 
   2013-11-17 22:08:05.003 KaiserTestApp[6396:a0b] Resetting plugins due to page load. 
   2013-11-17 22:08:05.509 KaiserTestApp[6396:a0b] Finished load of: file:///Users/prasuna/Library/Application Support/iPhone Simulator/7.0.3/Applications/5BFF2FA8-9E4B-45D3-B991-43EE8008A5F4/Library/Application Support/www956725435/default/KaiserTestApp.html 
   2013-11-17 22:08:05.524 KaiserTestApp[6396:a0b] DEPRECATION NOTICE: The Connection ReachableViaWWAN return value of '2g' is deprecated as of Cordova version 2.6.0 and will be changed to 'cellular' in a future release.  
   2013-11-17 22:08:05.532 KaiserTestApp[6396:a0b] {     appVersionPref = "1.0";     freeSpace = 132894613504;     wlSkinLoaderChecksum = "(null)";     wlSkinName = default; } 
   2013-11-17 22:08:05.541 KaiserTestApp[6396:a0b] [DEBUG] wlclient init started 
   2013-11-17 22:08:05.542 KaiserTestApp[6396:a0b] [DEBUG] Read cookies: null 
   2013-11-17 22:08:05.542 KaiserTestApp[6396:a0b] [DEBUG] CookieMgr read cookies: {} 
   2013-11-17 22:08:05.547 KaiserTestApp[6396:a0b] [DEBUG] before: app init onSuccess 
   2013-11-17 22:08:05.548 KaiserTestApp[6396:a0b] [DEBUG] after: app init onSuccess 
   2013-11-17 22:08:05.548 KaiserTestApp[6396:a0b] [DEBUG] added onPause event handler  
   2013-11-17 22:08:05.549 KaiserTestApp[6396:a0b] [DEBUG] wlclient init success 
   2013-11-17 22:08:05.638 KaiserTestApp[6396:a0b] [LOG] I am in main js file 
   2013-11-17 22:08:05.638 KaiserTestApp[6396:a0b] [DEBUG] HomeController created 
   2013-11-17 22:08:05.639 KaiserTestApp[6396:a0b] [DEBUG] Testing log 
   2013-11-17 22:09:21.000 KaiserTestApp[6396:a0b] [ERROR] error JSON.stringify()ing argument: TypeError: JSON.stringify cannot serialize cyclic structures. 
   2013-11-17 22:09:21.000 KaiserTestApp[6396:a0b] [ERROR] error JSON.stringify()ing argument: TypeError: JSON.stringify cannot serialize cyclic structures.  

我也尝试在 IOS 6 中运行演示应用程序,但在编译时出现以下错误。有人可以帮我理解这意味着什么,我该如何解决这个问题?

setenv WRAPPER_EXTENSION app

setenv WRAPPER_NAME KaiserTestApp.app

setenv WRAPPER_SUFFIX .app

setenv XCODE_APP_SUPPORT_DIR /Applications/Xcode.app/Contents/Developer/Library/Xcode

setenv XCODE_PRODUCT_BUILD_VERSION 4H1503

setenv XCODE_VERSION_ACTUAL 0463

setenv XCODE_VERSION_MAJOR 0400

setenv XCODE_VERSION_MINOR 0460

setenv YACC yacc

/bin/sh -c /Users/wppa/Library/Developer/Xcode/DerivedData/KaiserTestProjKaiserTestAppIphone-egvnwnfozzvukmdsxsnkzlsfjwgz/Build/Intermediates/KaiserTestProjKaiserTestAppIphone.build/Debug-iphonesimulator/KaiserTestProjKaiserTestAppIphone.build/Script-427B829D1393724500F223DC.sh


   Running a custom build phase script: buildtime.sh

   /Users/wppa/Library/Developer/Xcode/DerivedData/KaiserTestProjKaiserTestAppIphone-      egvnwnfozzvukmdsxsnkzlsfjwgz/Build/Intermediates/KaiserTestProjKaiserTestAppIphone.build/Debug-iphonesimulator/KaiserTestProjKaiserTestAppIphone.build/Script-427B829D1393724500F223DC.sh: line 7: /Users/wppa/Kaiser/buildtime.sh: Permission denied

   DONE with script: buildtime.sh (exitStatus=126)\n\n

【问题讨论】:

  • 该错误意味着一个对象被传递给JSON.stringify,它在其子对象中引用了自身(因此是“循环结构”)。我很确定JSON.stringify 不能在任何平台上处理这样的结构(它会导致无限递归),所以我不清楚为什么这只会发生在 iOS 上。如果您可以发布堆栈跟踪和导致问题的部分 JSON 对象,这可能有助于隔离问题...
  • 嗨,Ken,正如我在我的应用程序在 Android 模拟器中运行良好的问题中提到的,问题仅出在 IOS 模拟器上。我做了一些故障排除,发现问题可能是模拟器与 dojo 不兼容。起初代码在 dojo Ready 函数中抛出错误。当我删除它时,它开始在另一行抛出错误,这又是一个 dojo 代码。 Dojo 在内部使用 Json.strigify 并且不知何故 IOS Simulator 有问题。
  • 我很快就会认为问题出在 Worklight 或自定义代码中 - 我没有在 iOS 上使用 Dojo 看到这个问题......这就是我要求堆栈跟踪的原因。是的,Dojo 在某些情况下使用 JSON.stringify,但问题在于 传递 的内容(以及传递的内容)。
  • 通过堆栈跟踪,您是指我在 Xcode 中获取的日志吗?我已经用日志更新了我的问题。当 dojo Ready 函数尝试执行时,我收到 JSON.stringify 错误。
  • @Idan- 我正在等待您对此的特别评论。请帮忙。

标签: ios cordova dojo xcode5 ibm-mobilefirst


【解决方案1】:

关于您在 iOS 6 中遇到的具体问题,它实际上与 iOS 6 无关,也与这个问题完全无关(“...无法序列化循环结构...”)。 我建议将其拆分为另一个问题或将其删除。

运行自定义构建阶段脚本:buildtime.sh

/Users/wppa/Library/Developer/Xcode/DerivedData/KaiserTestProjKaiserTestAppIphone- egvnwnfozzvukmdsxsnkzlsfjwgz/Build/Intermediates/KaiserTestProjKaiserTestAppIphone.build/Debug-iphonesimulator/KaiserTestProjKaiserTestAppIphone.build/Script-427B829D1393724500F223DC.sh: 第 7 行:/Users/wppa/Kaiser/buildtime.sh:权限被拒绝

您缺少文件 buildtime.sh 的执行权限。

问题及解决方法在我对这个问题的回答中有详细说明:IBM Worklight - "Permission denied" when building in Xcode

我建议按照以下步骤操作:

使用 CHMOD 更改权限:

  1. 将路径复制到保存 buildtime.sh 文件的文件夹
  2. 打开终端应用程序
  3. 运行以下命令(但使用上面 1 中您自己的路径):chmod 755 /Users/idan/Documents/Worklight/workspace-6001/TestProject/apps/TestApp/iphone/native/buildtime.sh

【讨论】:

    猜你喜欢
    • 2023-02-01
    • 2017-07-05
    • 2015-12-26
    • 2016-01-22
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    相关资源
    最近更新 更多