1. ホーム
  2. ジャバスクリプト

[解決済み] エラーです。モジュール html が見つかりません

2022-03-03 06:42:18

質問

Node.jsは長い間使っておらず、expressも使ったことがありません。アプリケーションを起動しても、.NETが返されるだけでした。

Error: Cannot find module 'html'
  at Function.Module._resolveFilename (module.js:338:15)
  at Function.Module._load (module.js:280:25)
  at Module.require (module.js:364:17)
  at require (module.js:380:17)
  at new View (C:\Users\fr\node_modules\express\lib\view.js:42:49)
  at Function.app.render (C:\Users\fr\node_modules\express\lib\application.js:483:12)
  at ServerResponse.res.render (C:\Users\fr\node_modules\express\lib\response.js:755:7)
  at allClients (C:\Users\fr\node_modules\apps\chat.js:13:7)
  at callbacks (C:\Users\fr\node_modules\express\lib\router\index.js:161:37)
  at param (C:\Users\fr\node_modules\express\lib\router\index.js:135:11)

test.htmlを起動すると、エラーが発生しました。以下はそのコードです。

var io = require('socket.io');
var express = require('express');

var app = express(),
http = require('http'),
server = http.createServer(app),
socket = require('socket.io').listen(server);

app.configure(function(){
    app.use(express.static(__dirname));
});
app.get('/', function(req, res, next){
    res.render('./test.html');
});

server.listen(8333);

私のパス :

node_modules/
    express/
    socket.io/
    apps/
        chat.js
        test.html

なぜ?

EDIT :

これは私の新しいapp.configureです。

app.configure(function(){
    app.use(express.static(path.join(__dirname, 'public')));
});

しかし、それは.を返します。

 path is not defined

解決方法は?

test.htmlは静的ファイルであると仮定しています。静的ファイルをレンダリングするには 使用 というように、静的ミドルウェアを使用します。

app.use(express.static(path.join(__dirname, 'public')));

これは、アプリケーションの公開ディレクトリで静的ファイルを探すように express に指示します。

これを指定したら、ブラウザでファイルの場所を指定するだけで、表示されるはずです。

しかし、ビューをレンダリングしたい場合は、それに適したレンダラーを使用する必要があります。 コンソリデート どのライブラリを使うか決めたら、それをインストールするだけです。私はmustacheを使っているので、以下に設定ファイルのスニペットを示します。

var engines = require('consolidate');

app.set('views', __dirname + '/views');
app.engine('html', engines.mustache);
app.set('view engine', 'html');

これは、expressに次のように伝えています。

  • views ディレクトリでレンダリングするファイルを探します。

  • mustache を使ってファイルをレンダリングする

  • ファイルの拡張子は.html(.mustacheでも可)