我无法创建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)
我遵循的步骤是:
sencha app refresh
sencha app build testing
cordova
项目的wwww文件夹。platform add windows8
会出错。添加wp8和android工作正常并按预期构建和运行,问题仅出在windows8
。
谷歌也没有帮助。请告诉我出了什么问题。
答案 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专业。不知道是什么问题,但重新安装这些东西解决了我的问题。谢谢你的回答真的很感激!