cordova添加平台添加/生成windows8错误

时间:2014-09-17 09:46:43

标签: visual-studio cordova windows-8 sencha-touch sencha-touch-2

我无法创建cordova / sencha touch windows8项目。通过windows8添加平台cordova platform add windows8时,会出现此错误:

E:\testAndroid1\<app name>\platforms>cordova platform add windows8
Checking windows8 requirements...
Creating windows8 project...
Creating Cordova Windows 8 Project:
        App Name : -------
        Namespace : com.****.-------
        Path : E:\testAndroid1\<project name>\platforms\windows8
Project created
Error: EISDIR, illegal operation on a directory
    at Object.fs.readSync (fs.js:487:19)
    at Object.fs.readSync (C:\Users\dshahid\AppData\Roaming\npm\node_modules\cor
dova\node_modules\cordova-lib\node_modules\npm\node_modules\graceful-fs\polyfill
s.js:218:23)
    at Object.fs.readFileSync (fs.js:326:28)
    at C:\Users\dshahid\AppData\Roaming\npm\node_modules\cordova\node_modules\co
rdova-lib\src\cordova\metadata\windows8_parser.js:325:30
    at Array.forEach (native)
    at Object.module.exports.add_bom (C:\Users\dshahid\AppData\Roaming\npm\node_
modules\cordova\node_modules\cordova-lib\src\cordova\metadata\windows8_parser.js
:319:15)
    at C:\Users\dshahid\AppData\Roaming\npm\node_modules\cordova\node_modules\co
rdova-lib\src\cordova\metadata\windows8_parser.js:298:18
    at _fulfilled (C:\Users\dshahid\AppData\Roaming\npm\node_modules\cordova\nod
e_modules\q\q.js:798:54)
    at self.promiseDispatch.done (C:\Users\dshahid\AppData\Roaming\npm\node_modu
les\cordova\node_modules\q\q.js:827:30)
    at Promise.promise.promiseDispatch (C:\Users\dshahid\AppData\Roaming\npm\nod
e_modules\cordova\node_modules\q\q.js:760:13)

我遵循的步骤是:

  1. sencha app refresh
  2. sencha app build testing
  3. 将/ build / testing /中的所有文件复制到cordova项目的wwww文件夹。
  4. 运行platform add windows8会出错。
  5. 添加wp8和android工作正常并按预期构建和运行,问题仅出在windows8。 谷歌也没有帮助。请告诉我出了什么问题。

3 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我将其跟踪到bower_components

中的文件夹

基本上你有匹配这个正则表达式/\.(js|html|css|json)/的文件夹 因为windows_parser.js试图将其作为文件读取并爆炸。

答案 1 :(得分:0)

正如danyal所解释的,我发现我的一个文件夹(恰好是Chart.js)包含&#34; .js&#34;与模式/\.(js|html|css|json)/匹配。在我的情况下,它是在bower_components下,但也可能在你的项目中的任何位置。

简单地说,在windows8平台的构建过程中,cordova使用名为windows_parser.js的脚本:

  

%APPDATA%\漫游\ NPM \ node_modules \科尔多瓦\ node_modules \科尔多瓦-LIB \ SRC \科尔多瓦\元数据

该脚本包含以下第267行开头的

    ...
    var files = shell.ls('-R', www);

    files.forEach(function (file) {
        if (!file.match(/\.(js|html|css|json)/)) {
            return;
    }

    var filePath = path.join(www, file);
    var content = fs.readFileSync(filePath);
    ...

此脚本尝试枚举所有文件,然后与&#34; .js,.html,.css和.json&#34;匹配。它错误地期望所有返回的列表都是类型文件,然后尝试读取这些文件的内容。如果你的名字中有一个包含.js的文件,那么脚本将尝试读取它并且它失败并显示错误:&#34;错误:EISDIR,对目录的非法操作&#34;。

简而言之,请确保您在www下没有可能与上述模式匹配的目录。

-AQ

答案 2 :(得分:0)

我终于重新安装了Windows终极版windows 8.1并安装了visual studio express版。以前我有Windows专业。不知道是什么问题,但重新安装这些东西解决了我的问题。谢谢你的回答真的很感激!