cordova Android版在VS中失败,但在控制台中失败

cordova Android版在VS中失败,但在控制台中失败,android,visual-studio,cordova,visual-studio-cordova,Android,Visual Studio,Cordova,Visual Studio Cordova,我正在使用Visual Studio 2015 Update 3为Android和iOS开发Cordova应用程序,最近我在为Android构建应用程序时遇到了一些问题(iOS构建工作正常) 当我从VisualStudio生成时,我收到以下错误(我使用的是诊断MSBuild输出,但这是日志末尾显示的与错误相关的所有内容) 但是,如果我在命令提示符下运行命令cordova build android,它会工作得很好 我使用的是Cordova 7.0.1、Node 6.11.0、npm 3.10.1

我正在使用Visual Studio 2015 Update 3为Android和iOS开发Cordova应用程序,最近我在为Android构建应用程序时遇到了一些问题(iOS构建工作正常)

当我从VisualStudio生成时,我收到以下错误(我使用的是诊断MSBuild输出,但这是日志末尾显示的与错误相关的所有内容)

但是,如果我在命令提示符下运行命令
cordova build android
,它会工作得很好

我使用的是Cordova 7.0.1、Node 6.11.0、npm 3.10.10、Java 1.8.0.131


我尝试过无数解决这个问题的方法(卸载和重新安装工具和模块、缓存清理等)。我不知道Cordova的Visual Studio工具有什么问题。我是否可以在某个地方找到其他日志记录,帮助我了解此
未定义不是一个函数
错误?

我认为根本原因是您的节点版本太低。我在尝试运行MSVC Cordova关于推送通知的教程时遇到了这个问题。MSVC默认为一个古老的节点版本,如v0.11.16。但是他们告诉你在教程中使用的一个插件已经更新,现在需要更高版本的Android平台,这需要更新版本的Node(默认的LTS版本v6.11.0对我来说很好)

  • 卸载节点的所有旧版本
  • 在上安装Node的LTS版本(我编写本文时为v6.11.0)
  • 重新启动Windows(实际上,我遇到过这样一种情况:进程或守护进程挂在缓存的代理版本的节点上,以某种方式阻止它像预期的那样被删除)
  • 打开cmd.exe并键入
    where node.exe
    ,确保先找到v6.11.0版本的路径。如果没有,请修改路径并重新启动
  • 在MSVC中的选项->项目和解决方案->外部Web工具下,将node.exe的6.11.0版本的路径添加到 名单。(所有文档都告诉您这样做,但可能没有必要这样做,至少没有它,我的工作做得很好)
  • 在MSVC中的Options->Tools for Apache Cordova->Cordova Tools下禁用“使用沙盒版本的NodeJS”
  • 在MSVC中的选项->用于Apache Cordova的工具->Cordova工具下选择“清除Cordova缓存”
  • 注意:如果您从Cordova的v5升级到v6,建议使用说明8-11(请参阅)

  • 在控制台类型
    npm安装-g中cordova@X.Y.Z
    安装(其中X.Y.Z是您在项目的config.xml中选择的cordova CLI版本),以确保新版本的Node已安装cordova
  • 使用
    cordova platform Update android更新您的平台
  • 在项目目录中,运行
    cordova插件列表
  • 对于(10)中列出的每个插件,运行
    cordova plugin remove
    cordova plugin add
    重新安装插件

  • 确保在控制台上看到“BUILD SUCCESSFUL”(构建成功)正在运行
    cordova BUILD android

  • 验证构建是否也在MSVC中工作
  • 现在,通过在MSVC设置中重新打开“使用沙盒版本的NodeJS”并重新构建,您可以轻松地重新设置“TypeError undefined is not a function”(类型错误未定义不是函数)错误。因此,根本原因一定是由于NodeJS的过时版本



    关于这一点,我最喜欢的是软件社区如何试图解决六个不同的不兼容的包管理器之间的DLL地狱问题,这些管理器现在不断地相互冲突。

    此链接是否适用于您?如果您通过。cordova CLI?列表中没有空域。此外,我的错误是不同的。它说,取消定义不是一个函数。是的,当我在命令提示符下运行
    cordova build android
    时,它工作得很好,正如我已经提到的。我在cordova和VS上遇到的一些问题,我只需删除platforms文件夹就可以解决。VS将在您构建时自动重新创建它。
    1>                     No scripts found for hook "before_compile". (TaskId:25)
    1>                     ANDROID_HOME=C:\Program Files (x86)\Android\android-sdk (TaskId:25)
    1>                     JAVA_HOME=c:\Program Files\Java\jdk1.8.0_131\ (TaskId:25)
    1>                     Reading build config file: C:\apprep\build.json (TaskId:25)
    1>16:58:37.536     1>
    1>MSBUILD : cordova-build error : TypeError: undefined is not a function
    1>                     TypeError undefined is not a function (TaskId:25)
    1>                   Done executing task "MdaVsCli" -- FAILED. (TaskId:25)