1

ローカルで、さらにはno.deでも問題なく動作する、シンプルなexpressjsアプリを作成しましたが、Nodesterでhttp://myapp.nodester.com/にアクセスするInternal Server Errorと、が表示され、ログに次のように表示されます。

Error: failed to locate view "home"
    at Function.compile (/node_modules/express/lib/view.js:58:15)
    at ServerResponse._render (/node_modules/express/lib/view.js:416:18)
    at ServerResponse.render (/node_modules/express/lib/view.js:317:17)
    at Router.<anonymous> (/app/server.js:32:6)
    at done (/node_modules/express/lib/router/index.js:250:22)
    at middleware (/node_modules/express/lib/router/index.js:244:9)
    at param (/node_modules/express/lib/router/index.js:227:11)
    at pass (/node_modules/express/lib/router/index.js:232:6)
    at Router._dispatch (/node_modules/express/lib/router/index.js:255:4)
    at Object.handle (/node_modules/express/lib/router/index.js:45:10)

Error: failed to locate view "home"
    at Function.compile (/node_modules/express/lib/view.js:58:15)
    at ServerResponse._render (/node_modules/express/lib/view.js:416:18)
    at ServerResponse.render (/node_modules/express/lib/view.js:317:17)
    at Router.<anonymous> (/app/server.js:32:6)
    at done (/node_modules/express/lib/router/index.js:250:22)
    at middleware (/node_modules/express/lib/router/index.js:244:9)
    at param (/node_modules/express/lib/router/index.js:227:11)
    at pass (/node_modules/express/lib/router/index.js:232:6)
    at Router._dispatch (/node_modules/express/lib/router/index.js:255:4)
    at Object.handle (/node_modules/express/lib/router/index.js:45:10)

次に、fsモジュールを介して、なぜそこにないのかを確認しようとしましたが、次のようfs.readdir('.',function(error,files){console.log(files)})に返されました。

[ '.nodester',
  'app',
  'node_modules',
  'usr',
  'lib64',
  'sbin',
  'etc',
  'dev',
  'proc',
  'home',
  'bin',
  'lib',
  'root',
  '.PKGINFO',
  '.INSTALL' ]

git pushまた、編集したすべてのファイルがappsディレクトリ内にあることもわかりました。

viewsこれは、フォルダがどこにあるかを正しいパスで表現するように指示する必要があることを意味しますか?これどうやってするの ?(絶対パスでファイルをレンダリングするように指示する方法しか知りません)。

4

1 に答える 1

2

組み込み変数を使用してビューディレクトリを手動で設定します__dirname

var app = module.exports = express.createServer();
app.configure(function(){
        ...
        app.set('views', __dirname + '/views');
        app.use(express.static(__dirname + '/public'));
});

カンマラインツールを使用してアプリケーションスケルトンを生成してみてくださいexpress(npmから最後のエクスプレスバージョンをインストールした場合はアクセス可能です)。それはあなたにとって良い出発点を生み出します。

于 2011-09-01T12:52:31.540 に答える