質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

EJS

EJSは、JavaScript用のテンプレートエンジン。HTMLなどのテンプレートテキストにJavaScriptのロジックを記述することができます。また、変数・関数の実行をテンプレートテキスト内に埋め込むことも可能です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

解決済

expressで`Error: Failed to lookup view`となり表示できません。

makoto-n
makoto-n

総合スコア436

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

EJS

EJSは、JavaScript用のテンプレートエンジン。HTMLなどのテンプレートテキストにJavaScriptのロジックを記述することができます。また、変数・関数の実行をテンプレートテキスト内に埋め込むことも可能です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

2回答

0リアクション

0クリップ

7683閲覧

投稿2020/01/19 07:23

前提・実現したいこと

「JavaScriptエンジニアのためのNode.js入門」を写経しつつNodeを学習しています。
ですが、expressを扱う章から実行でエラーが起きるようになりました。

エラーメッセージを表示させず、ブラウザに出力されるはずのhtmlを出力させたいです。

発生している問題・エラーメッセージ

node/にはejs,express,body-parserをnpm installしています。
ブラウザでlocalhost:1234にアクセスし、更新をすると下記のエラーメッセージが出力されます。

console

$ node express-bk_02.js サーバを起動したぜ // ブラウザ更新後に以下が出力 Error: Failed to lookup view "express-bk_02.ejs" in views directory "/Applications/MAMP/htdocs/node/views" at Function.render (/Applications/MAMP/htdocs/node/node_modules/express/lib/application.js:580:17) at ServerResponse.render (/Applications/MAMP/htdocs/node/node_modules/express/lib/response.js:1012:7) at app.get (/Applications/MAMP/htdocs/node/express-bk_02.js:8:7) at Layer.handle [as handle_request] (/Applications/MAMP/htdocs/node/node_modules/express/lib/router/layer.js:95:5) at next (/Applications/MAMP/htdocs/node/node_modules/express/lib/router/route.js:137:13) at Route.dispatch (/Applications/MAMP/htdocs/node/node_modules/express/lib/router/route.js:112:3) at Layer.handle [as handle_request] (/Applications/MAMP/htdocs/node/node_modules/express/lib/router/layer.js:95:5) at /Applications/MAMP/htdocs/node/node_modules/express/lib/router/index.js:281:22 at Function.process_params (/Applications/MAMP/htdocs/node/node_modules/express/lib/router/index.js:335:12) at next (/Applications/MAMP/htdocs/node/node_modules/express/lib/router/index.js:275:10)

browser

Error: Failed to lookup view "express-bk_02.ejs" in views directory "/Applications/MAMP/htdocs/node/views" at Function.render (/Applications/MAMP/htdocs/node/node_modules/express/lib/application.js:580:17) at ServerResponse.render (/Applications/MAMP/htdocs/node/node_modules/express/lib/response.js:1012:7) at app.get (/Applications/MAMP/htdocs/node/express-bk_02.js:8:7) at Layer.handle [as handle_request] (/Applications/MAMP/htdocs/node/node_modules/express/lib/router/layer.js:95:5) at next (/Applications/MAMP/htdocs/node/node_modules/express/lib/router/route.js:137:13) at Route.dispatch (/Applications/MAMP/htdocs/node/node_modules/express/lib/router/route.js:112:3) at Layer.handle [as handle_request] (/Applications/MAMP/htdocs/node/node_modules/express/lib/router/layer.js:95:5) at /Applications/MAMP/htdocs/node/node_modules/express/lib/router/index.js:281:22 at Function.process_params (/Applications/MAMP/htdocs/node/node_modules/express/lib/router/index.js:335:12) at next (/Applications/MAMP/htdocs/node/node_modules/express/lib/router/index.js:275:10)

該当のソースコード

express-bk_02.js

js

var express = require('express'); var ejs = require("ejs"); var app = express(); app.engine('ejs', ejs.renderFile); app.get('/', (req, res) => { res.render('express-bk_02.ejs', { contents: '<p>hogehoge</p>' }); }); var server = app.listen(1234, () => { console.log('サーバを起動したぜ'); });

express-bk_02.ejs

ejs

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <%- contents %> </body> </html>

package.json

{ "name": "ejstest", "version": "1.0.0", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node server.js" }, "author": "", "license": "ISC", "dependencies": { "body-parser": "^1.19.0", "ejs": "^3.0.1", "express": "^4.17.1" }, "devDependencies": {}, "description": "" }

試したこと

前提としてexpressが起動できるのかの確認のためにtest.jsを起動したところ問題なく表示できました。
ですのでタイポかもしれないと思っているのですが、問題箇所がわかりません。

js

var express = require('express'); var app = express(); app.get('/', function (req, res) { res.send('Hello World!'); }); app.listen(3000, () => { console.log('サーバ起動したよ。。。') });

補足情報(FW/ツールのバージョンなど)

JavaScriptエンジニアのためのNode.js入門/天田士郎著

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

EJS

EJSは、JavaScript用のテンプレートエンジン。HTMLなどのテンプレートテキストにJavaScriptのロジックを記述することができます。また、変数・関数の実行をテンプレートテキスト内に埋め込むことも可能です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。