##トラブル
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パスにアクセスしても、「ファイルが見つかりません」というエラーが出てしまった。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。