

ブラウザからserverサイドとしてのJSを動かしたいのですが、ファイル読み込み先のJSファイルがそのまま返ってきてしまいます。PHPをApacheで動かすときはそれ用のモジュールの読み込みをhttpd.confに書きましたが、そのような設定が必要かと思い調べてみましたが、特に情報が無く困っています。以下今やっている手順です。

[code]

    const http = require('http');
    const fs = require('fs');
    
    const hostname = '127.0.0.1';
    const port = 3000;
    const server = http.createServer();
    
    server.on('request', function(req, res){
      if(req.url === "/js/index.js"){
        fs.readFile(__dirname + req.url, function(err, data){
          res.writeHead(200, {'Content-Type' : 'text/javascript', 'Access-Control-Allow-Headers' : 'Origin, X-Requested-With, Content-Type, Accept'});
          res.write(data);
          res.end(); 
        })
      }
    })
    
    server.listen(port, hostname)
    
[/code]

* * *
[code]

    forever start server.js
    
[/code]

* * *
[code]

    localhost:3000/js/index.js #ブラウザからアクセス
    
[/code]

* * *


CC BY-SA 4.0
2020-11-27T06:54:39.533
72232
2020-11-27T09:12:17.857
32180
question
node.js
ブラウザからnode.jsが動かせない


ソース内でreadFileでjavascriptファイルの中身をとってきて  
text/javascript  
としてヘッダーを返しています。  
そのためブラウザもヘッダーでtext/javascriptって返しているし、中身もJavascriptだから通常のWebサービスのようにJSファイルとして受け取っているのかと思います

ルーティングの基本としてはif文内に書きたい処理を書けばいいと思います。

[code]

      if(req.url === "/js/index.js"){
        //ここに書きたい処理を書いてしまえばいいと思います。
      }
    
[/code]

あとはNodeJS ルーティングで調べればいろいろ出てくるとは思いますが、  
[Express](http://expressjs.com/)を利用することが多いと思います。こちらも参考にしつつ試してみてください。


CC BY-SA 4.0
2020-11-27T07:26:46.500
72235
2020-11-27T07:26:46.500
22665
72232
answer


件名から判断して回答しますが。。  
ブラウザ上で、/js/index.jsの内容が表示されるのであれば  
mode.jsは動いてます。（ポート3000で待ち受けて動いているので）

なぜ、内容が表示されるかは。。

[code]

       res.write(data);
    
[/code]

しているので、そのまま表示されてるだけです。（実装された通りです）

単純にindex.jsを動かしたいのであれば、サーバーサイドのNode.jsではなく  
普通にNode.jsでやってみてはいかがでしょうか。  
（index.js内容も不明ですので、この時点で一旦回答します）


CC BY-SA 4.0
2020-11-27T07:42:05.780
72236
2020-11-27T07:42:05.780
42886
72232
answer


勘違いでした。fs.readFileでファイルを読んでtext/javascriptとして返すことはブラウザでjsを読めるようにして返すことで、node.jsを実行してその結果を得たいのであればrequire('/js/index.js')するだけでした。


CC BY-SA 4.0
2020-11-27T09:12:17.857
72239
2020-11-27T09:12:17.857
32180
72232
answer