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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Express

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

Q&A

解決済

1回答

1621閲覧

Expressのルーティング処理がうまくいかず、ローカルホスト起動時にエラーが出てしまう

moritat-222

総合スコア19

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Express

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

0グッド

0クリップ

投稿2020/04/24 10:54

##トラブル
expressフレームワークを利用してwebアプリを作ろうとしているのですが、ルーティングがうまく実装できません。

「/game1」というパスへのルーティングを実装し、「http://localhost:8001/routes/game1」にアクセスすると、「game1.pug1」のpugと「routes/game1.js」のjavascriptファイルを表示させたいと思っています。

しかし、app.jsにルーティングのための処理を実装すると、
コンソールで「PORT=8001 yarn start]」をした時にエラーが出てしまいます。

実装時に何を間違えてしまっているのか、ご指摘願います。よろしくお願いします。

##発生しているエラー

![イメージ説明]

index.jsにエラーが発生していると表示されるのですが、index.jsファイルはパッケージインストール時から変更を加えていないので、このファイルが原因とは考えにくく困っています。
Expressパッケージをインストールした時に、
コンソールで「PORT=8001 yarn start]」を実行した際には、ローカルホストは正常に作動していました。

##実装しているコード

  • ** "app.js"ファイル **

JavaScript

1 2var createError = require('http-errors'); 3var express = require('express'); 4var path = require('path'); 5var cookieParser = require('cookie-parser'); 6var logger = require('morgan'); 7 8var indexRouter = require('./routes/index'); 9var usersRouter = require('./routes/users'); 10 11//「/game1」というパスへのルーティングを実装 12var game1Router = require('./routes/game1'); 13 14 15var app = express(); 16 17// view engine setup 18app.set('views', path.join(__dirname, 'views')); 19app.set('view engine', 'pug'); 20 21app.use(logger('dev')); 22app.use(express.json()); 23app.use(express.urlencoded({ extended: false })); 24app.use(cookieParser()); 25app.use(express.static(path.join(__dirname, 'public'))); 26 27app.use('/', indexRouter); 28app.use('/users', usersRouter); 29 30//「/game1」というパスへのルーティングを実装 31app.use('/game1', game1Router); 32 33// catch 404 and forward to error handler 34app.use(function(req, res, next) { 35 next(createError(404)); 36}); 37 38// error handler 39app.use(function(err, req, res, next) { 40 // set locals, only providing error in development 41 res.locals.message = err.message; 42 res.locals.error = req.app.get('env') === 'development' ? err : {}; 43 44 // render the error page 45 res.status(err.status || 500); 46 res.render('error'); 47}); 48 49module.exports = app; 50

var game1Router = require('./routes/game1');

app.use('/game1', game1Router);
の2行をapp.jsに加えるまで、ローカルホストは正常に作動していたので、何かここに原因があるのではないかと思っております。

  • ** "routes/game1.js"ファイル **

JavaScript

1 2'use strict'; 3const express = require('express'); 4const router = express.Router(); 5 6router.get('/', function(req, res, next){ 7 res.render('/game1') 8}); 9 10

自分なりにやってみたこと

** ・エラーの出ているindex.jsファイルを削除 **

→loader.jsの処理時にindex.jsがないとエラーを返すため失敗。

** ・"app.js"に、 **

var game1Router = require('./routes/game1'); と app.use('/game1', game1Router);

を加えるのをやめ、代わりに

app.get('/game1',(req,res)=>{ res.render('/game1.pug') });

を記述

→ローカルサーバーを起動することができたが、
/game1パスにアクセスしても、「ファイルが見つかりません」というエラーが出てしまった。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

"routes/game1.js"ファイルに、
"module.exports = router"
の記述が抜けていた

投稿2020/06/24 07:37

moritat-222

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問