当前位置: 首页 > 知识库问答 >
问题:

Cordova Android构建错误“无法读取未定义的属性'长度'”

王昊
2023-03-14

我有一个旧的科尔多瓦项目,我正在更新。作为这个过程的一部分,我删除了android平台并重新阅读了它。

现在,当我尝试构建项目时,出现以下错误:

C:\App>cordova build android --verbose
No scripts found for hook "before_build".
No scripts found for hook "before_prepare".
Checking config.xml and package.json for saved platforms that haven't been added to the project
Config.xml and package.json platforms are the same. No pkg.json modification.
Package.json and config.xml platforms are different. Updating config.xml with most current list of platforms.
PlatformApi successfully found for platform android
Checking config.xml for saved plugins that haven't been added to the project
Checking for any plugins added to the project that have not been installed in android platform
No differences found between plugins added to project and installed in android platform. Continuing...
Generating platform-specific config.xml from defaults for android at C:\App\platforms\android\res\xml\config.xml
Merging project's config.xml into platform-specific android config.xml
Found "merges/android" folder. Copying its contents into the android project.
Merging and updating files from [www, platforms\android\platform_www, merges\android] to platforms\android\assets\www
Wrote out android application name "App" to C:\App\platforms\android\res\values\strings.xml
android-versionCode not found in config.xml. Generating a code based on version in config.xml (1.0.20): 10020
Wrote out Android package name "com.nge.app" to C:\App\platforms\android\src\com\nge\bca\MainActivity.java
Updating icons at platforms\android\res
Updating splash screens at platforms\android\res
This app does not have additional resource files defined
Prepared android project successfully
No scripts found for hook "after_prepare".
No scripts found for hook "before_compile".
ANDROID_HOME=C:\Android\sdk
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_40
Error: Cannot read property 'length' of undefined

这在我删除平台之前确实起到了作用,所以我猜是一个bug或一个配置文件发生了变化。

这里有一个类似的问题:https://pt.stackoverflow.com/questions/219442/cordova-build-android-error-cannot-read-property-length-of-undefined

共有2个答案

魏兴邦
2023-03-14

您可以使用降级cordova cli

npm install -g cordova@6.4.0

并用give命令构建项目

ionic cordova build android

无需添加平台,它会自动添加。如果要求更新cordova cli,请选择否

顾承平
2023-03-14

我找到了另一个解决方案,将Android降级到6.1.2版本,因为这里的建议(以及各种论坛上的许多其他建议,如重新安装插件等)对我不起作用:

cordova platform update android@6.1.2 --save

如果这在第一手不起作用,请尝试以下操作:

>

  • 首先移除Android平台:

    cordova platform remove android
    

    添加Android版本6.1.2:

    cordova platform add android@6.1.2
    

    构建Android:

    cordova build android
    

    以下是我在上述(Mac上)之前采取的一些额外步骤,以确保:

    >

    通过以下方式添加JAVA\u主页:

    echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile
    

    重新启动shell(CMD Q并再次打开)

    确保echo$JAVA\u HOME等于Android Studio-

    对我来说,这是以下路径和版本:

    /Library/Java/JavaVirtualMachine/jdk1.8.0\U 144。jdk/目录/主页

    更新Android Studio和所有SDK包

    更新npm

    npm update -g
    

    注意:在OS X 10.11 El Capitan或更高版本上,运行:

    sudo npm update -g --unsafe-perm=true
    

    更新科尔多瓦

    npm update -g cordova
    

    如果所有这些都不适用于您,您别无选择,我建议您尝试将Cordova降级到6.4.0版本:

    npm update -g cordova@6.4.0
    

  •  类似资料:
    • 我使用cordova create project hello com创建了一个cordova项目。你好你好。 并使用cordova platform添加iOS添加iOS平台。并尝试在cordova构建ios后执行cordova运行ios。 但它向我显示了这个错误(我使用了--d/--verbose来获取详细信息)。 /usr/bin/codesign--强制--签名---时间戳=无/卷/无标题/

    • 尝试使用< code>getAuth请求来存储令牌。请求不调用API并抛出错误。 TypeError:无法在HttpHeaders.push处读取undefined的属性(读取“length”)../node _ modules/@ angular/common/Fe sm5/http . js . http headers . apply update(http . js:199)at http

    • 问题内容: 我是Reactjs的新手。我正在尝试做一个非常简单的事情:当用户在文本区域内更改文本时,在render函数中更新div。有什么建议? 问题答案: 您应该绑定该函数。您收到此错误的原因是,在handleChange函数中,键盘操作未引用React类的上下文,因此您需要绑定该函数。 看到这个答案

    • 我搜索了这个网站,发现了类似的问题,但没有解决我的问题。当我滚动到一个div时,我试图使它固定在屏幕顶部。但我一直在犯错误: "(index): 59未捕获类型错误:无法读取未定义的属性'top'at(index): 59" 我还在学习jQuery,不能解决这个问题。

    • 问题内容: 我正在使用jQuery将表单字段发布到PHP文件,该文件仅根据是否工作而返回1/0。 代码摘录: 但是,每次成功(html == 1)时,控制台都会引发错误“未捕获的TypeError:无法读取未定义的属性’defaultView’”,并且警报永远不会发生…? Google似乎没有关于此错误和jQuery的大量信息,谁知道原因? 问题答案: 这是因为以前不是您要处理的内容,现在是jQu

    • 我的代码: 错误: 未处理PromisejectionWarning:TypeError:无法读取未定义的未处理PromisejectionWarning:未处理的promise拒绝的属性“forEach”。此错误源于在没有catch块的情况下抛出异步函数的内部,或者拒绝使用未处理的promise。catch()。(拒绝id:1)(节点:7188)[DEP0018]弃用警告:未处理的promise