2015-11-02 43 views
3

我正在一個IONIC項目,錯誤:鉤子失敗,錯誤代碼1:

當我添加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) 

我的鉤\ 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

所以任何想法,其中我犯了一個錯誤....

+0

你正在使用哪個? – Muhsin

+0

使用命令更新您的jshint npm更新jshint並更新所有內容(Cordova,Ionic CLI,Ionic Lib) – Muhsin

+0

我正在使用Windows 7 @Muhsin – RBK

回答

2

請檢查你的hooks directory有執行許可權。獲得所有權限的鉤子,它的c hild文件夾

+1

Windows的權限??? – Cozzbie

1

如果您的文件中有任何錯誤,它也會失敗,錯誤代碼爲1。檢查以確保它在這之前沒有告訴你有關您文件中的任何錯誤。

0

我有一個與Moodle Mobile 2構建相似的問題,返回此錯誤 - 我錯過了要完成構建的主目錄中的'node_modules'文件夾。
希望這有助於

5

只需刪除您的掛鉤目錄並鍵入此命令。

ionic hooks add

這將解決您的問題。

+0

沒有這樣的命令,請更新答案 –

1

在我的情況下,我創建了一個after_prepare鉤子來覆蓋cordova構建過程,以使用config.xml中指定的實際版本代碼。我有同樣的錯誤。 我解決了它,在我的鉤子文件(沒有引號)在頂部添加「#!/ usr/bin/env節點」。解決了所有問題。希望它可以幫助你。

相關問題