0

nodejsファイルがありますrunner.node.js

私が実行するnode runner.node.jsとそれは動作します

しかし、tuをnpm testで実行しようとすると(package.jsonで参照されます):

"test": "node ./spec/runner.node.js"

また

"test": "spec/runner.node.js"

ファイルが実行可能ではないことを示しています。

sh: 1: spec/runner.node.js: Permission denied
npm ERR! Test failed.  See above for more details.
npm ERR! not ok code 0

ファイルを実行可能ファイルとして設定すると、次のように表示されます。

spec/runner.node.js: 1: spec/runner.node.js: Syntax error: word unexpected (expecting ")")
npm ERR! Test failed.  See above for more details.
npm ERR! not ok code 0

「nodespec/runner.node.js」で正しく実行されている間

ファイルは次のとおりです。

console.log("Running Knockout tests in Node.js");

var fs = require('fs');
var jasmine = require('./lib/jasmine-1.2.0/jasmine');

// export jasmine globals
for (var key in jasmine) {
    global[key] = jasmine[key];
}

// add our jasmine extensions to the exported globals
require('./lib/jasmine.extensions');

// export ko globals
if (process.argv.length > 2 && process.argv[2] == '--source') {
    // equivalent of  ../build/knockout-raw.js
    global.DEBUG = true;
    global.ko = global.koExports = {};
    global.knockoutDebugCallback = function(sources) {
        sources.unshift('build/fragments/extern-pre.js');
        sources.push('build/fragments/extern-post.js');
        eval(sources.reduce(function(all, source) {
            return all + '\n' + fs.readFileSync(source);
        }, ''));
    };
    require('../build/fragments/source-references');
} else {
    global.ko = require('../build/output/knockout-latest.js');
}

// reference behaviors that should work out of browser
require('./arrayEditDetectionBehaviors');
require('./asyncBehaviors');
require('./dependentObservableBehaviors');
require('./expressionRewritingBehaviors');
require('./extenderBehaviors');
require('./mappingHelperBehaviors');
require('./observableArrayBehaviors');
require('./observableBehaviors');
require('./subscribableBehaviors');

// get reference to jasmine runtime
var env = jasmine.jasmine.getEnv();

// create reporter to return results
function failureFilter(item) {
    return !item.passed();
}
env.addReporter({
    reportRunnerResults:function (runner) {
        var results = runner.results();
        runner.suites().map(function (suite) {
            // hack around suite results not having a description
            var suiteResults = suite.results();
            suiteResults.description = suite.description;
            return suiteResults;
        }).filter(failureFilter).forEach(function (suite) {
            console.error(suite.description);
            suite.getItems().filter(failureFilter).forEach(function (spec) {
                console.error('\t' + spec.description);
                spec.getItems().filter(failureFilter).forEach(function (expectation) {
                    console.error('\t\t' + expectation.message);
                });
            });
        });
        console.log("Total:" + results.totalCount + " Passed:" + results.passedCount + " Failed:" + results.failedCount);
        process.exit(results.failedCount);
    }
});

// good to go
env.execute();
4

1 に答える 1

2

追加

#/usr/bin/env node

ファイルの最初の行として。このように、実行可能ファイルとして実行すると、OSはNode.jsを使用して実行することを認識します(正確には、OSはnode、スクリプトを実行するために呼び出された最初のアプリケーションを使用することを認識します)。

于 2013-02-26T14:24:20.643 に答える