お世話になってます。
実は今、ビルド済みのApp.jsを用意して、
それをクライアントに返し、webプラウザで開いて
文字を表示していますが、これをNodeで実行すると
表示できないのですが、ご教示お願いできますでしょうか?
app2.js (Node実行ファイル)
const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; var server = http.createServer(); server.on('request', doRequest); // ファイルモジュールを読み込む var fs = require('fs'); // リクエストの処理 function doRequest(req, res) { // ファイルを読み込んだら、コールバック関数を実行する。 fs.readFile('./build/index.html', 'utf-8' , doReard ); // コンテンツを表示する。 function doReard(err, data) { res.writeHead(200, {'Content-Type': 'text/html'}); res.write(data); res.end(); } } server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
HTMLファイル
<!doctype html> <html> <head> <meta charset="UTF-8"> <title>rtk-react</title> </head> <body> <div id="react-root"></div> //ビルドし生成されたApp.jsファイル <script type="text/javascript" src="./App.js"></script> </body> </html>
・表示したい内容
import React from 'react'; import ReactDOM from 'react-dom'; ReactDOM.render( <span>div_Nitta!!</span>, document.getElementById('react-root') );
但し、手動でHTMLファイルを叩くと文字は表示されているので正しくビルドできていると思います。
「手動でHTMLファイルを叩くと文字は表示されている」という意味がよく伝わってこないのですが、`<div id="react-root"></div>`を`TESTTESTTEST<div id="react-root"></div>`にした場合、TESTTESTTESTとブラウザーに表示されますか? もう少し状況の説明が必要だと思いますので、何が上手く行っていて何が上手く行っていないかを追記して下さい。そもそも、クライアントからのリクエストは受信出来ているかなど。あとは、サーバー側、クライアント側にそれぞれエラーが出てるのかどうかなど、出ているならそのエラー内容。
どういった情報を質問文に載せたら良いかが分からない場合は、まずは、「質問する時のヒント」を参考にしておけば間違いないかと思います。https://teratail.com/help/question-tips
要するに、HTMLファイルを直接ダブルクリックした場合はビルド済みApp.jsファイルを使って普通に、上記のコードでdiv_Nitta!と表示されます。しかし、コマンドラインからNodeでapp2.jsファイルを叩いても何も表示されません。以前のexpressのものはあれはあれで使ってますが、今回はまた別にテストしたかったので質問しました。
なるほど。とりあえず上記に記載したような諸々の追加情報を載せて頂かないと、回答者側が環境作ってコード動かして試してということをしないといけなくなりますよ。
今後はより上記のようにできるだけ、詳細に説明できるようにしたいと考えます。すいません。
回答1件
あなたの回答
tips
プレビュー