Hapinodejsフレームワークを使い始めました。 「[email protected]」を使用しています。これが、アプリケーションを開始するためのserver.jsのコードです。
'use strict';
const Hapi = require('hapi');
const server = new Hapi.Server();
server.connection({ port: 3000, Host: 'localhost' });
server.route({
method: 'GET',
path: '/',
handler: function (request, reply) {
reply('Hello, world!');
}
});
server.start((err) => {
if (err) {
throw err;
}
console.log(`Server running at: ${server.info.uri}`);
});
ターミナルからnode server.js
を使用してプロジェクトを実行した後、以下のようなエラーがスローされます。
/var/www/html/hello_hapi/server.js:6
server.connection({ port: 3000, Host: 'localhost' });
^
TypeError: server.connection is not a function
at Object.<anonymous> (/var/www/html/hello_hapi/server.js:6:8)
at Module._compile (module.js:612:30)
at Object.Module._extensions..js (module.js:623:10)
at Module.load (module.js:531:32)
at tryModuleLoad (module.js:494:12)
at Function.Module._load (module.js:486:3)
at Function.Module.runMain (module.js:653:10)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3
エラーを解決するための解決策を見つけました。交換したばかりserver.connection({ port: 3000, Host: 'localhost' });
とconst server = new Hapi.Server({ port: 3000, Host: 'localhost' });
以下に説明を示します。hapiv17.0.0によると、単一サーバーの複数接続のサポートが削除されました。
Hapi 16ではserver.connection()がサポートされていましたが、hapi 17ではserver.connection()に置き換わり、代わりに
const Hapi = require('hapi')
const server = Hapi.server({
port:3000 || process.env.port
})
これはノードjsで使用できます。
TypeScriptとタイピングを使用している場合は、
const server = new Hapi.server({port:3000 || process.env.port})
これに置き換えます
const server = new Hapi.Server({
Host: 'localhost',
port: 3000
})
これを使用している場合
server.connection({
port: 8000,
Host: 'localhost'
});