我正在使用Visual Studio 2015 Update 3为Android和iOS开发Cordova应用程序,最近我在为Android构建时遇到了一些问题(iOS构建工作正常)。
当我从Visual Studio构建时,我收到以下错误(我正在使用诊断MSBuild输出,但这是显示与错误相关的所有内容,在日志的末尾)。
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)
但是,如果我从命令提示符运行命令cordova build android
,它运行良好。
我使用的是Cordova 7.0.1,Node 6.11.0,npm 3.10.10,Java 1.8.0.131。
我已经尝试过无数解决这个问题的方法(卸载并重新安装工具和模块,缓存清理等等)。我无法想象Cordova的Visual Studio工具有什么问题。我是否可以在某处找到可以帮助我了解此undefine is not a function
错误来自何处的其他日志记录?
答案 0 :(得分:0)
我认为根本原因是你的Node版本太低了。我试图在推送通知上运行MSVC Cordova教程。 MSVC默认为古代节点版本,如v0.11.16。但是他们告诉你在教程中使用的其中一个插件已经更新,现在需要更高版本的Android平台,这需要更新版本的Node(默认的LTS版本v6.11.0对我来说很好)。
where node.exe
,确保首先显示v6.11.0版本的路径。如果不修改PATH并重新启动。注:如果您从Cordova的v5更新到v6,建议您使用说明8-11(请参阅https://stackoverflow.com/a/29990937/2448947)
npm install -g cordova@X.Y.Z
中(其中X.Y.Z是您在项目的config.xml中选择的cordova CLI版本),以确保新版本的Node安装了Cordova。cordova platform update android
更新您的平台。cordova plugin list
。对于(10)中列出的每个插件,请运行cordova plugin remove <X>
和cordova plugin add <X>
以重新安装插件。
确保您从控制台看到“BUILD SUCCESSFUL”正在运行cordova build android
。
现在,您可以通过在MSVC设置和重建中重新启用“使用沙盒版本的NodeJS”轻松地重新编写“TypeError undefined is not a function”错误。因此,根本原因必须是NodeJS的过时发布。
我最喜欢的是软件社区如何尝试使用现在经常相互冲突的六个不同的不兼容软件包管理器来解决DLL Hell问题。