Visual Studio Cordova 构建失败

Posted

技术标签:

【中文标题】Visual Studio Cordova 构建失败【英文标题】:Visual Studio Cordova build fails 【发布时间】:2015-05-15 18:01:39 【问题描述】:

当我使用 Cordova 构建任何 android 应用程序时,它会失败并显示

TypeError:无法读取未定义的属性“prepEnv”。

我已完成所有故障排除并检查了环境变量(根据 MS 文档)

我发现如果我从我的项目文件夹中调用bld\Debug\platforms\android\cordova\build --ant --debug,构建工作。

但是当我调用"C:\Users\<user>\AppData\Roaming\npm\\node_modules\vs-mda\vs-cli.cmd" build --platform Android --configuration Debug --projectDir . --rojectName Gappy --npmInstallDir C:\Users\<user>\AppData\Roaming\npm --language en-US --buildTarget AndroidDevice 时,构建失败。

第二种方法的一个步骤,是调用第一个批处理文件。

VS2013 和 VS2015 会发生这种情况。 64 位和 32 位版本的 Node.JS

有什么帮助/想法吗?

【问题讨论】:

您能否发布诊断构建日志。转到工具 -> 选项 -> 项目和解决方案 -> 构建并运行,将 MSBuild 项目“构建输出详细程度”更改为诊断。重建项目后 - 应该会有额外的信息 - 可能会帮助您解决问题。 我有同样的错误输出: >命令:D:\cordova\build.bat --debug --ant >D:\cordova\node_modules\q\q.js:126 >throw e; >^ >TypeError: Cannot read property 'prepEnv' of undefined > at Object.module.exports.run (D:\cordova\lib\build.js:326:19) > at D:\cordova\build:36:22 > 在 _fulfilled (D:\cordova\node_modules\q\q.js:798:54) > 在 self.promiseDispatch.done (D:\cordova\node_modules\q\q.js:827:30) > 在 Promise。 promise.promiseDispatch (D:\cordova\node_modules\q\q.js:760:13) > 在 D:\cordova\node_modules\q\q.js:574:44 > 在刷新时 (D:\cordova\node_modules\ q\q.js:108:17) > 在 process._tickCallback (node.js:355:11) 在我上一条评论中,我编辑了输出以适应最大字符数。我将路径从 D:\CS.Cordova\bld\Debug\platforms\android\cordova 更改为 D:\cordova 顺便说一句,它曾经对我使用 CTP 3,但自从我卸载并安装 CTP 3.1 后出现错误 【参考方案1】:

我注意到构建文件的调用方式不同,具体取决于解决方案的路径是否包含空格:

1> ------ 构建配置选项: 1> 运行命令:C:\Projects\Mobile\AppSolutionName\AppSolutionName\bld\Debug\platforms\android\cordova\build.bat --debug --ant

1> ------ 构建配置选项:--debug 1> 运行命令:cmd "/s /c ""C:\Projects\Mobile Apps\AppSolutionName\AppSolutionName\bld\Debug\platforms\android\cordova\build.bat" --debug --ant ""

如果有空格,它会工作,如果没有空格,它会失败并显示“TypeError: Cannot read property 'prepEnv' of undefined”。我不知道这是否特定于我的环境,但我现在可以构建路径中的空格。

【讨论】:

哇,这行得通!你刚刚解锁了我,谢谢!我已经填补了这个错误:connect.microsoft.com/VisualStudio/feedback/details/1192337/… 我花了两个小时才弄明白,但我没有时间进一步挖掘。很高兴我能提供帮助,希望它得到修复。 我将此标记为解决方案,直到错误在连接处得到修复。 详细说明:简单地说... c:\source\folder\whatever\something\blah\... == BAD BAD BAD c:\source code\folder\whatever\something \blah\... == GOOD GOOD GOOD(注意“源代码”中的空格)。不管在哪里...只要确保某处有空间基本上就像在命令提示符下一样。如果你的路径中有空格...它会在它周围加上双引号导致它工作。如果您的路径中没有任何空格......没有双引号......没有工作。感谢微软浪费了几天的时间。与您的 QA 部门进行一次快速的小 SCRUM 怎么样? 很好的答案,谢谢!但是路径中没有空格就不行吗?真的吗?让我对这个框架充满信心【参考方案2】:

在 Mac OS X Yosemite 上:

清理项目并用 sudo 重建它为我修复了它。

/path/to/your/project/platforms/android/cordova 文件夹:

sudo ./clean
sudo ./build --release

【讨论】:

以上是关于Visual Studio Cordova 构建失败的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 2015 TACo 上获取 Cordova 插件集成的构建错误

如何在 Visual Studio 2013 的 iOS 构建服务器中升级 cordova 版本?

Visual Studio 2015 预览版 - Apache Cordova 构建错误

Visual Studio Cordova iOS 构建服务器设置

Visual Studio 2015 for Cordova - 无法为 iOS 构建

使用 Microsoft Visual Studio 2015 构建 Cordova 时“未检测到所选目标的有效 MSBuild”