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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

2回答

2259閲覧

node js 画像

kzs

総合スコア6

Node.js

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/03/05 18:28

現在node.js でウェブサイトを作っている初心者プログラマーです。
node を使うと画像が読み込めません。
説明が下手ですがお願いします。。

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

GET http://localhost:3000/player.jpg 404 (Not Found)

###該当のソースコード

javascript

1//app.js 2var express = require('express'); 3var path = require('path'); 4var cookieParser = require('cookie-parser'); 5var bodyParser = require('body-parser'); 6var exphbs = require('express-handlebars'); 7var expressValidator = require('express-validator'); 8var flash = require('connect-flash'); 9var session = require('express-session'); 10var passport = require('passport'); 11var LocalStrategy = require('passport-local').Strategy; 12var mongo = require('mongodb'); 13var mongoose = require('mongoose'); 14 15mongoose.connect('mongodb://localhost/loginapp'); 16var db = mongoose.connection; 17 18var routes = require('./routes/index'); 19var users = require('./routes/users'); 20 21// Init App 22var app = express(); 23 24// View Engine 25app.set('views', path.join(__dirname, 'views')); 26app.engine('handlebars', exphbs({defaultLayout:'layout'})); 27app.set('view engine', 'handlebars'); 28 29// BodyParser Middleware 30app.use(bodyParser.json()); 31app.use(bodyParser.urlencoded({ extended: false })); 32app.use(cookieParser()); 33 34// Set Static Folder 35app.use(express.static(path.join(__dirname, 'public'))); 36 37// Express Session 38app.use(session({ 39 secret: 'secret', 40 saveUninitialized: true, 41 resave: true 42})); 43 44// Passport init 45app.use(passport.initialize()); 46app.use(passport.session()); 47 48// Express Validator 49app.use(expressValidator({ 50 errorFormatter: function(param, msg, value) { 51 var namespace = param.split('.') 52 , root = namespace.shift() 53 , formParam = root; 54 55 while(namespace.length) { 56 formParam += '[' + namespace.shift() + ']'; 57 } 58 return { 59 param : formParam, 60 msg : msg, 61 value : value 62 }; 63 } 64})); 65 66// Connect Flash 67app.use(flash()); 68 69// Global Vars 70app.use(function (req, res, next) { 71 res.locals.success_msg = req.flash('success_msg'); 72 res.locals.error_msg = req.flash('error_msg'); 73 res.locals.error = req.flash('error'); 74 res.locals.user = req.user || null; 75 next(); 76}); 77 78 79 80app.use('/', routes); 81app.use('/users', users); 82 83// Set Port 84app.set('port', (process.env.PORT || 3000)); 85 86app.listen(app.get('port'), function(){ 87 console.log('Server started on port '+app.get('port')); 88});

###試したこと
dirは
login file にapp.jsとviews file があり、views file の中にindex.handlebars(html)とplayer.jpgがあります。
index.handlebarsでplayer.jpgを表示させたいのですがエラー404が出てしまいます。

###index.handlebars

<h2 class="page-header">Open pack</h2> <p>Regular pack</p> <div class="contents"> <img src="/player.jpg" alt="pack"> </div>

よろしくお願いいたします

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

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

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

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

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

guest

回答2

0

プログラムのjsファイルがあるフォルダに画像ファイルを配置してませんか?
としているので、publicフォルダ内に画像を配置すれば表示されるはずですが?

投稿2017/03/05 19:00

turbgraphics200

総合スコア4267

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

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

kzs

2017/03/06 21:55

上手くいきませんでした。。 具体的なやり方を教えていただけると助かります。
guest

0

ちなみに404になるのは画像(player.jpg)ですか?それともindex.htmlですか?とりあえずここではindex.htmlは見えていて、画像が見えないという認識で回答します。

上記の設定だと./app.jsと同じ階層にpublicというディレクトリがあって、serve-staticはその中にあるファイルを配信するという動作になるはずです。

具体的には前段にプロクシがいるのかどうかなどで全然変わってきますが、まずはturbgraphics200さんがおっしゃっているように、スクリプトと同一階層にpublicというディレクトリがあり、そこに画像ファイルを配置してあるかどうかを確認して見てください。

#ディレクトリ構成が問題無い場合は、ファイル/ディレクトリのアクセス権の設定を見てみてください。expressを実行しているプロセスから読み取れないとエラーになると思います。

投稿2017/03/08 02:49

shuntksh

総合スコア196

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問