【问题标题】:Error: Hook failed with error code 1:错误:挂钩失败,错误代码为 1:
【发布时间】:2017-01-06 15:44:59
【问题描述】:

我正在从事一个 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 安装异步

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

【问题讨论】:

  • 您使用的是哪个操作系统?
  • 使用命令 npm update jshint 更新您的 jshint 并更新所有内容(Cordova、Ionic CLI、Ionic Lib)
  • 我正在使用 Windows 7 @Muhsin
  • 谢谢@Mushin,但我现在正在旅行,今天不在办公室,我们将在星期一聊天。

标签: android node.js npm ionic


【解决方案1】:

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

ionic hooks add

它会解决你的问题。

【讨论】:

    【解决方案2】:

    请检查您的hooks directory 是否有执行权限。将所有权限授予挂钩及其子文件夹

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          我在 Moodle Mobile 2 构建中遇到了类似的问题,返回此错误 - 我缺少主目录中的“node_modules”文件夹以完成构建。
          希望这会有所帮助

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-09-07
            • 1970-01-01
            • 1970-01-01
            • 2017-09-13
            • 2017-06-30
            • 1970-01-01
            • 2015-09-13
            相关资源
            最近更新 更多