iOS上传App Store报错:this action cannot be completed -22421 解决方案

在使用Xcode8升级Swift项目后,提交版本时遇到错误代码22421。解决方法是取消上传操作,稍后再尝试重新上传,通常这是由于苹果服务器繁忙引起的。

最近swift项目升了xcode8,提交版本时,遇到这个:

this action cannot be completed -22421

 

瞬间懵逼,连具体报错原因都没有,只有一个代码 22421,找了一圈资料,发现很简单:

 

直接Cancel掉,重新Upload一次就行了,如果还不行,等几分钟再试一次。

 

原因就是:苹果服务器那边繁忙导致的,并不是我们打包的问题。

话说这个倒是第一次遇到,蛮奇怪。

 

不过我第二次再上传就好了,对了,包也不需要重新Archive的

+ xcodebuild -workspace -scheme -configuration Debug -sdk iphonesimulator -deriveDataPath /Users/ios/Desktop/Omada_iOS/Omada_IOS/build build CODE_SIGN_IDENTITY= CODE_SIGNING_REQUIRED=NO 2025-12-31 16:20:25.876 xcodebuild[50607:4399553] Writing error result bundle to /var/folders/ww/zqz02m7x3mn23f96s2yf322m0000gn/T/ResultBundle_2025-31-12_16-20-0025.xcresult xcodebuild: error: invalid option '-deriveDataPath' Usage: xcodebuild [-project <projectname>] [[-target <targetname>]...|-alltargets] [-configuration <configurationname>] [-arch <architecture>]... [-sdk [<sdkname>|<sdkpath>]] [-showBuildSettings [-json]] [<buildsetting>=<value>]... [<buildaction>]... xcodebuild [-project <projectname>] -scheme <schemeName> [-destination <destinationspecifier>]... [-configuration <configurationname>] [-arch <architecture>]... [-sdk [<sdkname>|<sdkpath>]] [-showBuildSettings [-json]] [-showdestinations] [<buildsetting>=<value>]... [<buildaction>]... xcodebuild -workspace <workspacename> -scheme <schemeName> [-destination <destinationspecifier>]... [-configuration <configurationname>] [-arch <architecture>]... [-sdk [<sdkname>|<sdkpath>]] [-showBuildSettings] [-showdestinations] [<buildsetting>=<value>]... [<buildaction>]... xcodebuild -version [-sdk [<sdkfullpath>|<sdkname>] [-json] [<infoitem>] ] xcodebuild -list [[-project <projectname>]|[-workspace <workspacename>]] [-json] xcodebuild -showsdks [-json] xcodebuild -exportArchive -archivePath <xcarchivepath> [-exportPath <destinationpath>] -exportOptionsPlist <plistpath> xcodebuild -exportNotarizedApp -archivePath <xcarchivepath> -exportPath <destinationpath> xcodebuild -exportLocalizations -localizationPath <path> -project <projectname> [-defaultLanguage <language>] [-exportLanguage <targetlanguage>... [-includeScreenshots]] xcodebuild -importLocalizations -localizationPath <path> -project <projectname> [-mergeImport] xcodebuild -resolvePackageDependencies [-project <projectname>|-workspace <workspacename>] -clonedSourcePackagesDirPath <path> xcodebuild -create-xcframework [-help] [-framework <path>] [-library <path> [-headers <path>]] -output <path> xcodebuild -downloadPlatform <iOS|watchOS|tvOS|visionOS> [-exportPath <destinationpath> -buildVersion <version>] xcodebuild -downloadAllPlatforms [-exportPath <destinationpath>] Options: -usage print brief usage -help print complete usage -verbose provide additional status output -license show the Xcode and SDK license agreements -checkFirstLaunchStatus Check if any First Launch tasks need to be performed -runFirstLaunch install packages and agree to the license. Add an `-checkForNewerComponents` flag to check for any additional Xcode Device support components. -downloadAllPlatforms downloads a matching simulator runtime for every platform in this Xcode -downloadPlatform NAME download the platform NAME -importPlatform DMG_Path import the platform NAME -project NAME build the project NAME -target NAME build the target NAME -alltargets build all targets -workspace NAME build the workspace NAME -scheme NAME build the scheme NAME -configuration NAME use the build configuration NAME for building each target -xcconfig PATH apply the build settings defined in the file at PATH as overrides -arch ARCH build each target for the architecture ARCH; this will override architectures defined in the project -sdk SDK use SDK as the name or path of the base SDK when building the project -toolchain NAME use the toolchain with identifier or name NAME -destination DESTINATIONSPECIFIER use the destination described by DESTINATIONSPECIFIER (a comma-separated set of key=value pairs describing the destination to use) -destination-timeout TIMEOUT wait for TIMEOUT seconds while searching for the destination device -parallelizeTargets build independent targets in parallel -jobs NUMBER specify the maximum number of concurrent build operations -maximum-concurrent-test-device-destinations NUMBER the maximum number of device destinations to test on concurrently -maximum-concurrent-test-simulator-destinations NUMBER the maximum number of simulator destinations to test on concurrently -parallel-testing-enabled YES|NO overrides the per-target setting in the scheme -parallel-testing-worker-count NUMBER the exact number of test runners that will be spawned during parallel testing -maximum-parallel-testing-workers NUMBER the maximum number of test runners that will be spawned during parallel testing -dry-run do everything except actually running the commands -quiet do not print any output except for warnings and errors -hideShellScriptEnvironment don't show shell script environment variables in build log -showsdks display a compact list of the installed SDKs -showdestinations display a list of destinations -showTestPlans display a list of test plans -showBuildSettings display a list of build settings and values -showBuildSettingsForIndex display build settings for the index service -list lists the targets and configurations in a project, or the schemes in a workspace -find-executable NAME display the full path to executable NAME in the provided SDK and toolchain -find-library NAME display the full path to library NAME in the provided SDK and toolchain -version display the version of Xcode; with -sdk will display info about one or all installed SDKs -enableAddressSanitizer YES|NO turn the address sanitizer on or off -enableThreadSanitizer YES|NO turn the thread sanitizer on or off -enableUndefinedBehaviorSanitizer YES|NO turn the undefined behavior sanitizer on or off -resultBundlePath PATH specifies the directory where a result bundle describing what occurred will be placed -resultStreamPath PATH specifies the file where a result stream will be written to (the file must already exist) -resultBundleVersion 3 [default] specifies which result bundle version should be used -clonedSourcePackagesDirPath PATH specifies the directory to which remote source packages are fetch or expected to be found -derivedDataPath PATH specifies the directory where build products and other derived data will go -archivePath PATH specifies the directory where any created archives will be placed, or the archive that should be exported -exportArchive specifies that an archive should be exported -exportNotarizedApp export an archive that has been notarized by Apple -exportOptionsPlist PATH specifies a path to a plist file that configures archive exporting -enableCodeCoverage YES|NO turn code coverage on or off when testing -exportPath PATH specifies the destination for the product exported from an archive -skipUnavailableActions specifies that scheme actions that cannot be performed should be skipped instead of causing a failure -exportLocalizations exports completed and outstanding project localizations -importLocalizations imports localizations for a project, assuming any necessary localized resources have been created in Xcode -localizationPath specifies a path to XLIFF localization files -exportLanguage specifies multiple optional ISO 639-1 languages included in a localization export -defaultLanguage specifies the default ISO 639-1 language to be used as the source language on export -xctestrun specifies a path to a test run specification -testProductsPath specifies a path for the test products -enablePerformanceTestsDiagnostics YES|NO enables performance trace and memgraph collection for performance XCTests -testPlan specifies the name of the test plan associated with the scheme to use for testing -only-testing constrains testing by specifying tests to include, and excluding other tests -only-testing:TEST-IDENTIFIER constrains testing by specifying tests to include, and excluding other tests -skip-testing constrains testing by specifying tests to exclude, but including other tests -skip-testing:TEST-IDENTIFIER constrains testing by specifying tests to exclude, but including other tests -test-timeouts-enabled YES|NO enable or disable test timeout behavior -default-test-execution-time-allowance SECONDS the default execution time an individual test is given to execute, if test timeouts are enabled -maximum-test-execution-time-allowance SECONDS the maximum execution time an individual test is given to execute, regardless of the test's preferred allowance -test-iterations <number> If specified, tests will run <number> times. May be used in conjunction with either -retry-tests-on-failure or -run-tests-until-failure, in which case this will become the maximum number of iterations. -retry-tests-on-failure If specified, tests will retry on failure. May be used in conjunction with -test-iterations <number>, in which case <number> will be the maximum number of iterations. Otherwise, a maximum of 3 is assumed. May not be used with -run-tests-until-failure. -run-tests-until-failure If specified, tests will run until they fail. May be used in conjunction with -test-iterations <number>, in which case <number> will be the maximum number of iterations. Otherwise, a maximum of 100 is assumed. May not be used with -retry-tests-on-failure. -test-repetition-relaunch-enabled YES|NO Enable or disable, tests repeating in a new process for each repetition. Must be used in conjunction with -test-iterations, -retry-tests-on-failure, or -run-tests-until-failure. If not specified, tests will repeat in the same process. -only-test-configuration constrains testing by specifying test configurations to include, and excluding other test configurations -skip-test-configuration constrains testing by specifying test configurations to exclude, but including other test configurations -collect-test-diagnostics on-failure|never Whether or not testing collects verbose diagnostics (like a sysdiagnose) when encountering a failure -testLanguage constrains testing by specifying ISO 639-1 language in which to run the tests -testRegion constrains testing by specifying ISO 3166-1 region in which to run the tests -enumerate-tests Enumerate the tests that would be executed by this command without actually executing them -test-enumeration-style The style in which to enumerate the tests. Valid styles: flat, hierarchical -test-enumeration-format The output format of the enumerated tests. Valid formats: text, json -test-enumeration-output-path The path (relative or absolute) where the results of test enumeration should be written. If '-' is supplied, writes to standard out. -resolvePackageDependencies resolves any Swift package dependencies referenced by the project or workspace -disableAutomaticPackageResolution prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file -onlyUsePackageVersionsFromResolvedFile prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file -skipPackageUpdates Skip updating package dependencies from their remote -disablePackageRepositoryCache disable use of a local cache of remote package repositories -skipPackagePluginValidation Skip validation of package plugins (this can be a security risk if they are not from trusted sources) -skipMacroValidation Skip validation of macros (this can be a security risk if they are not from trusted sources) -packageCachePath path of caches used for package support -packageAuthorizationProvider keychain|netrc Specify the credential store to be used when resolving packages -defaultPackageRegistryURL URL of the default package registry -packageDependencySCMToRegistryTransformation specifies the transformation to apply to SCM-based package dependencies (none, useRegistryIdentity, or useRegistryIdentityAndSources) -skipPackageSignatureValidation Skip validation of package signatures (this can be a security risk if they are not from trusted sources) -packageFingerprintPolicy Package fingerprint checking policy (`warn` or `strict`) -packageSigningEntityPolicy Package signing entity checking policy (`warn` or `strict`) -json output as JSON (note: -json implies -quiet) -allowProvisioningUpdates Allow xcodebuild to communicate with the Apple Developer website. For automatically signed targets, xcodebuild will create and update profiles, app IDs, and certificates. For manually signed targets, xcodebuild will download missing or updated provisioning profiles. Requires a developer account to have been added in Xcode's Accounts settings or an App Store Connect authentication key to be specified via the -authenticationKeyPath, -authenticationKeyID, and -authenticationKeyIssuerID parameters. -allowProvisioningDeviceRegistration Allow xcodebuild to register your destination device on the developer portal if necessary. This flag only takes effect if -allowProvisioningUpdates is also passed. -authenticationKeyPath specifies the path to an authentication key issued by App Store Connect. If specified, xcodebuild will authenticate with the Apple Developer website using this credential. The -authenticationKeyID and -authenticationKeyIssuerID parameters are required. -authenticationKeyID specifies the key identifier associated with the App Store Conect authentication key at -authenticationKeyPath. This string can be located in the users and access details for your provider at "https://appstoreconnect.apple.com". -authenticationKeyIssuerID specifies the App Store Connect issuer identifier associated with the authentication key at -authenticationKeyPath. This string can be located in the users and access details for your provider at "https://appstoreconnect.apple.com". -scmProvider which implementation to use for Git operations (system/xcode) -showBuildTimingSummary display a report of the timings of all the commands invoked during the build -create-xcframework create an xcframework from prebuilt libraries; -help for more information. ios编译信息
最新发布
01-01
<think>好的,我现在需要帮助用户解决关于nodemon应用崩溃的问题。用户提到的错误信息是:“npmWARNgentlyRmnot removing /home/zero/node_modules/.bin/grunt as it wasn't installed by /home/zero/node_modules/grunt-cli”,然后应用崩溃,显示“app crashed waiting for file changes before starting”和“npm load cleanupLog completed”。用户希望理解并解决这个问题。 首先,我需要分析错误信息。看起来有两个主要部分:npm的警告和nodemon崩溃的信息。先看npm的警告部分:“npmWARNgentlyRmnot removing /home/zero/node_modules/.bin/grunt as it wasn't installed by /home/zero/node_modules/grunt-cli”。这可能是在执行某个npm命令时,尝试删除某个文件但未成功,因为该文件不是由grunt-cli安装的。这可能是因为用户可能运行了npm uninstall或类似的命令,或者nodemon在重启时触发了某些清理操作,但遇到了权限或文件所有权的问题。 接下来是nodemon崩溃的信息:“app crashed waiting for file changes before starting”。这通常表示应用程序本身在启动时崩溃,而nodemon检测到文件变化后尝试重启,但应用程序无法启动成功,导致nodemon持续等待。用户可能的问题在于应用程序代码中存在错误,或者依赖项安装不正确,导致启动失败。 可能的解决步骤需要分两部分:处理npm的警告和处理nodemon的应用崩溃。 处理npm警告部分: 1. 检查node_modules目录中的grunt相关文件是否存在冲突或权限问题。用户可能在全局或本地安装了grunt-cli,但手动删除了某些文件,导致npm无法正确清理。 2. 建议用户手动删除node_modules目录并重新安装依赖,确保所有依赖项正确安装,避免残留文件导致冲突。可以使用`rm -rf node_modules && npm install`命令。 3. 检查是否有全局安装的grunt-cli与本地版本冲突,建议卸载全局安装的版本,或在项目中明确指定版本。 处理nodemon崩溃问题: 1. 查看应用程序的启动日志,确定具体的错误原因。用户可能需要运行`npm start`或直接运行入口文件(如app.js)来查看详细的错误信息。 2. 检查应用程序代码是否有语法错误、缺少的依赖模块或配置错误。例如,未安装的模块、错误的端口占用、环境变量未设置等。 3. 确保package.json中的scripts配置正确,特别是启动脚本是否指向正确的文件。 4. 检查nodemon的配置文件(如果有的话),确认监控的文件范围和忽略的目录是否正确,避免不必要的重启循环。 5. 如果应用程序依赖数据库或其他外部服务,确保这些服务已启动并可访问。 综合来看,用户的问题可能是由于node_modules中的某些文件问题导致依赖项无法正确加载,进而使得应用程序启动失败,而nodemon在检测到文件变化后不断尝试重启,但由于应用程序本身的错误无法成功。建议用户先清理node_modules并重新安装依赖,然后单独运行应用程序查看详细错误信息,再根据具体错误进行修复。 此外,用户可能需要注意文件权限问题,特别是在Linux系统下,如果使用sudo安装某些全局模块,可能导致本地项目的权限混乱,需要确保所有文件和目录的权限正确。</think>根据你的错误日志分析,问题可能涉及依赖管理冲突和应用程序启动失败两个层面。以下是分步解决方案: ### 一、解决npm警告(grunt相关冲突) 1. **手动清理残留文件** ```bash rm -rf /home/zero/node_modules/.bin/grunt rm -rf node_modules # 彻底删除依赖目录 npm cache clean --force # 清除npm缓存 ``` 2. **检查全局安装包冲突** ```bash npm list -g --depth=0 # 查看全局安装的包 sudo npm uninstall -g grunt grunt-cli # 卸载冲突的全局包 ``` 3. **重新安装项目依赖** ```bash npm install --legacy-peer-deps # 强制兼容旧版依赖 ``` ### 二、解决nodemon应用崩溃 1. **查看原始错误日志** ```bash npm start 2>&1 | tee error.log # 捕获启动日志 ``` 2. **常见崩溃原因排查表** | 现象 | 检查点 | 解决方案 | |------|--------|----------| | 端口占用 | `netstat -tuln \| grep :3000` | 修改端口或结束进程 | | 模块缺失 | `ls node_modules/express` | 重新安装依赖 | | 语法错误 | `node --check app.js` | 修复代码错误 | | 内存溢出 | `export NODE_OPTIONS=--max_old_space_size=4096` | 增加内存限制 | 3. **配置nodemon排除监控干扰** 创建`nodemon.json`: ```json { "ignore": ["node_modules/", ".git/"], "events": { "restart": "rs" } } ``` ### 三、进阶调试方法 1. **使用调试模式启动** ```bash nodemon --inspect app.js ``` 然后在Chrome中访问`chrome://inspect`进行断点调试[^1] 2. **依赖树分析** ```bash npm ls --prod --depth=5 # 显示依赖树结构 ``` 该错误可能由以下原因导致: 1. 未正确清理的旧依赖文件与当前项目产生冲突 2. 应用程序代码中存在隐藏的异步错误 3. 环境变量配置缺失(如数据库连接字符串) 建议按照先清理环境、再验证基础功能、最后逐步添加复杂功能的顺序进行排查。如果问题仍然存在,可以尝试通过`strace`跟踪系统调用: ```bash strace -f -o nodemon.log npm start ``` 相关问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值