taratara3939
@taratara3939

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Chrome の JavaScript で GameScreen.js が期待通り動きません

解決したいこと

現在、Node.js,html,jsを使用して、タイピングゲームを作成中なのですが、html内のjsを呼び出すことができずに困っています。

発生している問題・エラー

ブラウザ上で何も表示されない

フォルダ階層

-htmlフォルダ
GameScreen.html
-jsフォルダ
GameScreen.js

typing.js

開発環境

OS:Win11
ブラウザ:Google Chrome
Webサーバー:Node.js
IDE:Vscode

コード
typing.js

//Node.jsのhttpモジュールの読み込み
var http = require("http");
//expressフレームワークの読み込み
var express = require("express");

var app = express();
//サーバの作成
var server = http.createServer(app);

app.use(express.static(__dirname));

app.get("/", function (req, res) {
    return res.sendFile(__dirname + "/html/start.html");
});

app.get("/GameScreen", function (req, res) {
    return res.sendFile(__dirname + "/html/GameScreen.html");
});

//サーバーが特定のポートでリクエストを受け付けるように設定
server.listen(8000);

GameScreen.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ゲーム画面</title>
</head>
<body>
    <script src="../js/GameScreen.js"></script>
</body>
</html>

GameScreen.js

/* カウントダウンの処理 */
var count = 3;
function countdown() {
    console.log(count);
    count--;
}
countdown();

自分で試したこと

・相対パスの設定を変更した
・jsファイルを使用せずにhtml内に直接GameScreen.jsの内容を書き込んだ
・htmlの記述は普通に表示されます

0

2Answer

開発環境(OS, ブラウザ、Web サーバー、IDE など)を質問欄に追記してください。

Node.js をブラウザで直接動かすとか考えているのですか?

1Like

Comments

  1. @taratara3939

    Questioner

    SurferOnWwwさん、返信ありがとうございます。
    開発環境は
    OS:Win11
    ブラウザ:Google Chrome
    Webサーバー:Node.js
    IDE:Vscode
    となっております。

    console.logでブラウザ上に数字が表示されると勘違いしていました。
    document.getElementById("output").innerHTML = count;とすることでブラウザ上に数字を表示させることができました。また、開発環境なども今後は質問の際に上げるようにしたいと思います。

  2. @taratara3939

    Questioner

    ご返信ありがとうございます。質問欄に追記しました。

  3. console.logでブラウザ上に数字が表示されると勘違いしていました。

    勘違いということで、タイトルの「html内のjsの呼び出しができません」ということはなかったということですね。であれば、このスレッドの問題・課題は解決ということでクローズしてください。

    あと、表題の、

    Node.jsからhtml内のjsの呼び出しができません

    は適切ではないのでは?

    Node.js は開発サーバーを起動するために使っていただけですよね。であれば、Node.js は関係なくて、「Chrome の JavaScript で GameScreen.js が期待通り動きません」ということのはずです。少なくともタイトルが適切な表現になるよう書き直していただけませんか?

  4. @taratara3939

    Questioner

    ご返信ありがとうございます。タイトルを変更し、質問をクローズしたいと思います。ご指摘ありがとうございました。

GameScreen.jsでは画面描画に関する処理は何もしていないので「何も表示されない」のは当たり前だと思います.
console.log系はブラウザの開発者ツールとかで確認してください.

今のうちに指摘しておきますが

    <script src="../js/GameScreen.js"></script>

各種アセットを読み込む記述をクライアントが解釈するとこのURLでサーバーにリクエストが飛ぶことになります.つまり,Expressサーバー側はこの時飛んだリクエストに対して適切な応答を返さなければなりません.
プロジェクトにもよりますがstaticに全部投げ込むのはあんまりお行儀がよくないので,ルーティングするなりして必要なファイルだけ公開できるようにしてください.

1Like

Comments

  1. @taratara3939

    Questioner

    返信遅れて申し訳ありません。Vercleneさん、ご返信ありがとうございます。次からは、簡潔にまとめられるようにしていきます。

Your answer might help someone💌