前提・実現したいこと
javascript文をサイトを参考にして書いている際に、それがLinux系を開発環境にしていることが分かりました。よって以下のコードのままではおそらくpathに関するエラーが出てきてしまいます。
何かwindowsのpathに変換したりする方法がございましたら、よろしくお願いいたします。
発生している問題・エラーメッセージ
Failed to load resource: the server responded with a status of 404 (Not Found)
該当のソースコード
javascript
1const server = http.createServer((req, res) => { 2 var filePath; 3 if (req.url == '/') { 4 filePath = '/index.html'; 5 } else { 6 filePath = req.url; 7 } 8 const fullPath = __dirname + filePath; 9 //const fullPath = path.resolve(__dirname, filePath); 10 11 fs.readFile(fullPath, 'utf-8' , (err, data) => { 12 if (err) { 13 res.writeHead(404, {'Content-Type': 'text/plain'}); 14 res.write('not found!'); 15 return res.end(); 16 } 17 res.writeHead(200, {'Content-Type': 'text/html'}); 18 res.write(data); 19 res.end(); 20 }) 21});
html
1<body> 2 <p class="lead"></p> 3 <script src="/socket.io/socket.io.js"></script> 4 <script type="text/javascript" src="/textillate/jquery-3.3.1.js"></script> 5 <script type="text/javascript" src="/textillate/jquery.textillate.js"></script> 6 <script type="text/javascript" src="/textillate/assets/jquery.lettering.js"></script> 7 <link rel="stylesheet" type="text/css" href="/textillate/assets/animate.css"></link>
試したこと
path.resolveでpathを結合すればいいという記述を見かけたので、やってみましたがうまくいきませんでした。
このjs記述のあるファイルとloadしようとしているファイルの位置関係はどうなっていますか?
結局のところパスが違うだけなので環境は関係ないとは思いますよ
そうなのですか。
実行中のjsファイルがあるディレクトリにそのままhtmlファイルが有り、htmlファイル内で参照されているファイルは、そのディレクトリ内のtextillateフォルダーの中に格納されているという形です。
あれ?でも__dirnameってあまり聞き覚えないので調べましたが、Node.jsでは・・??
少なくともJavaScriptにはない機能だと思いますが
仰る通りNode.jsです。
初学者でして、Javascriptとの明確な違いを分かっていませんでしたが、__dirnameは使えるのだと思います。
タグに「Node.js」を追加しておいてください。
根本部分はJavaScriptかもしれませんがサーバ側で動作させるための機能が揃っている(私も詳しいわけではないですが)ため、普通に「JavaScript」として書くと見ている人にも混乱を招きます。
回答2件
あなたの回答
tips
プレビュー