1

私はこれを理解するのに苦労していますが、それほど複雑ではないと確信しています。何らかの理由で、このコードから以下のエラーが発生します。

/*
 * GET home page.
 */

exports.index = function(req, res){
    exec('ls -l ~/Sites/branches | grep "^d"', function (error, stdout, stderr) {
        // var lines = stdout.split("\n");
        // var folder;
        // lines.forEach(function(line){
        //     folder = line.match(/([^\s]+)$/igm);
        //     if (folder!='null') {
        //         sys.puts(folder);
        //     }
        // });
        res.render('index', {
            title: 'Express',
            lines: 'hi'
        });
    });

};

linesからデータを取得し、単純に文字列に設定する行をコメントアウトしましたlines。関係なく、以下のエラーが表示されます。

Express
500 ReferenceError: /Users/luisgomez/Desktop/mashlocaldevman/views/index.ejs:10 8| <h1><%= title %></h1> 9| <p>Welcome to <%= title %></p> >> 10| <p>Lines: <%= lines.length %></p> 11| </body> 12| </html> 13| lines is not defined
<%= title %>
Welcome to <%= title %>

Lines: <%= lines.length %>

lines is not defined
at eval (eval at (/Users/luisgomez/Desktop/mashlocaldevman/node_modules/ejs/lib/ejs.js:226:12))
at exports.compile (/Users/luisgomez/Desktop/mashlocaldevman/node_modules/ejs/lib/ejs.js:228:15)
at Object.exports.render (/Users/luisgomez/Desktop/mashlocaldevman/node_modules/ejs/lib/ejs.js:266:13)
at View.exports.renderFile [as engine] (/Users/luisgomez/Desktop/mashlocaldevman/node_modules/ejs/lib/ejs.js:292:22)
at View.render (/Users/luisgomez/Desktop/mashlocaldevman/node_modules/express/lib/view.js:75:8)
at Function.app.render (/Users/luisgomez/Desktop/mashlocaldevman/node_modules/express/lib/application.js:504:10)
at ServerResponse.res.render (/Users/luisgomez/Desktop/mashlocaldevman/node_modules/express/lib/response.js:677:7)
at exports.index (/Users/luisgomez/Desktop/mashlocaldevman/routes/index.js:7:7)
at callbacks (/Users/luisgomez/Desktop/mashlocaldevman/node_modules/express/lib/router/index.js:165:11)
at param (/Users/luisgomez/Desktop/mashlocaldevman/node_modules/express/lib/router/index.js:139:11)

ビューとエクスプレスの最新バージョンに単純な HTML を使用しています。'linesレンダー呼び出しから変数を削除すると、ビューは正常にレンダリングされます。

何か案は?

ありがとうございました、

ルイス

4

1 に答える 1

1

行をコメントアウトすると、行が定義されないため、長さを評価できません。

Lines: <%= lines.length %>

そのコードのコメントを外しても、何らかの理由で stdout が空である場合 (stderr が入力されていますか?)、行も定義できませんでした。

error か stderr !== null かどうかを確認して、ログアウトしてみましたか?

何かのようなもの:

function (error, stdout, stderr) {
    console.log('stdout: ' + stdout);
    console.log('stderr: ' + stderr);
    if (error !== null) {
      console.log('exec error: ' + error);
    }
}
于 2012-08-29T03:56:38.537 に答える