错误:挂钩失败,错误代码为1:

时间:2015-11-02 08:00:12

标签: android node.js npm ionic

我正在开展IONIC项目,

当我添加android平台时,它给我一个这样的错误。

Error: Hook failed with error code 1: D:\IONIC Workspace\risecx-app\hooks\before_prepare\01_jshint.js
    at C:\Users\HP\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\src\hooks\HooksRunner.js:195:23
    at _rejected (C:\Users\HP\AppData\Roaming\npm\node_modules\cordova\node_modules\q\q.js:797:24)
    at C:\Users\HP\AppData\Roaming\npm\node_modules\cordova\node_modules\q\q.js:823:30
    at Promise.when (C:\Users\HP\AppData\Roaming\npm\node_modules\cordova\node_modules\q\q.js:1035:31)
    at Promise.promise.promiseDispatch (C:\Users\HP\AppData\Roaming\npm\node_modules\cordova\node_modules\q\q.js:741:41)
    at C:\Users\HP\AppData\Roaming\npm\node_modules\cordova\node_modules\q\q.js:557:44
    at flush (C:\Users\HP\AppData\Roaming\npm\node_modules\cordova\node_modules\q\q.js:108:17)
    at doNTCallback0 (node.js:417:9)
    at process._tickCallback (node.js:346:13)

我的hooks \ before_prepare \ 01_jshint.js文件就像......

#!/usr/bin/env node

var fs = require('fs');
var path = require('path');
var jshint = require('jshint').JSHINT;
var async = require('async');

var foldersToProcess = [ 'js', 'js/services' ];

foldersToProcess.forEach(function(folder) {
        processFiles("www/" + folder);
});

function processFiles(dir, callback) {
        var errorCount = 0;
        fs.readdir(dir, function(err, list) {
                if (err) {
                        console.log('processFiles err: ' + err);
                        return;
                }
                async.eachSeries(list, function(file, innercallback) {
                        file = dir + '/' + file;
                        fs.stat(file, function(err, stat) {
                                if(!stat.isDirectory()) {
                                        if(path.extname(file) === ".js") {
                                                lintFile(file, function(hasError) {
                                                        if(hasError) {
                                                                errorCount++;
                                                        }
                                                        innercallback();
                                                });
                                        } else {
                                                innercallback();
                                        }
                                } else {
                                        innercallback();
                                }
                        });
                }, function(error) {
                        if(errorCount > 0) {
                                process.exit(1);
                        }
                });
        });
}

function lintFile(file, callback) {
        console.log("Linting " + file);
        fs.readFile(file, function(err, data) {
                if(err) {
                        console.log('Error: ' + err);
                        return;
                }
                if(jshint(data.toString())) {
                        console.log('File ' + file + ' has no errors.');
                        console.log('-----------------------------------------');
                        callback(false);
                } else {
                        console.log('Errors in file ' + file);
                        var out = jshint.data(),
                        errors = out.errors;
                        for(var j = 0; j < errors.length; j++) {
                                console.log(errors[j].line + ':' + errors[j].character + ' -> ' + errors[j].reason + ' -> ' +
errors[j].evidence);
                        }
                        console.log('-----------------------------------------');
                        callback(true); 
                }
        });
}

我使用过以下命令......

  

npm install jshint --save

     

npm install q --save

     

npm install async

所以任何想法,我在哪里犯错......

5 个答案:

答案 0 :(得分:5)

只需删除您的hooks目录并输入此命令。

ionic hooks add

它将解决您的问题。

答案 1 :(得分:2)

请检查您的SELECT * FROM ( SELECT id ,place ,round(( cnt / sum(cnt) OVER ( ORDER BY NULL ) ) * 100, 2) AS pct FROM ( SELECT a.id ,a.place ,count(a.id) AS cnt FROM injury_place a JOIN person_injuryPlace_map b ON a.id = b.injury_id GROUP BY a.id ,a.place ) ) pivot(max(id) , max(pct) pct FOR place IN ( 'kitchen' AS kitchen ,'Washroom' Washroom ,'Rooftop' Rooftop ,'Garden' Garden )) 是否具有执行权限。授予挂钩及其子文件夹的所有权限

答案 2 :(得分:1)

如果您的任何文件出错,它也会失败并显示错误代码1。检查以确保在此之前没有告诉您文件中的任何错误。

答案 3 :(得分:1)

在我的例子中,我创建了一个after_prepare挂钩来覆盖cordova构建过程以使用config.xml中指定的实际versionCode。我有同样的错误。 我通过添加&#34; #!/ usr / bin / env node &#34;解决了这个问题。在我的钩子文件(没有引号)的顶部。解决了一切。希望它可以帮助你。

答案 4 :(得分:0)

我遇到类似问题,Moodle Mobile 2版本返回此错误 - 我错过了主目录中的'node_modules'文件夹,以便完成构建。
希望这有帮助