2017-12-11 9 views
-1

いくつかのファイル(index.htmlとws.js [サーバを設定する])を設定した後、私のウェブサイトが使用する追加のJSファイル。私はrequire()追加のファイルにしようとしましたが、役に立たない。 node ws.jsを実行すると、サーバーが起動し、index.htmlが表示されますが、ボタン(run.jsで定義された機能を持つ)は "replace is undefined"と表示します。私はコマンドnode ws.jsでサーバを実行し、URL localhost:8080でウェブサイトにアクセスします。もともと私はモジュールの輸出を持っていませんでしたが、それはまだ動作しませんでした。私はindex.htmlをダブルクリックするだけで、これがすべて動作するようになったので、ローカルで動作することがわかりました(正しい場合)。ここでウェブサイトはローカルに動作しますが、NodeJSウェブサーバではありません。初心者

は私のws.jsファイルです:ここで

var http = require("http"); 
var fs = require("fs"); 
var events = require("events"); 
var serveStatic = require("serve-static"); 
var eventEmitter = new events.EventEmitter(); 

var run = require("./run.js"); 
run(); 

http.createServer(function (request, response) { 
    fs.readFile('index.html', function(err, data) { 
     // Send the HTTP header 
     // HTTP Status: 200 : OK 
     // Content Type: text/plain 
     response.writeHead(200, {'Content-Type': 'text/html'}); 

     response.write(data); 
     return response.end(); 
    }); 
}).listen(8080); 

// Console will print the message 
console.log('Server running at http://127.0.0.1:8080/'); 
console.log(__filename); 
console.log(__dirname); 

(function() { 
    function hi() { 
     alert("This is working!"); 
    } 
})(); 

は私run.jsファイルです:

function run() { 
    function testerClicked() { 
     alert("Tester has been clicked!"); 
    } 

    function replace() { 
     var temp = (document.getElementById("tester").innerHTML === "This is a button." ? "This button has been pressed!" : "This is a button."); 
     document.getElementById("tester").innerHTML = temp; 
    } 
} 

module.exports = run; 

これは私がHTMLで関数を呼んでいる行です。

<button id='tester' onclick="replace()">This is a button.</button> 

申し訳ありませんが、これは基本的な質問です。私はサーバとJavaScript/HTML/CSSについて学び始めました。

+0

あなたはhtmlファイルを提供しているようですが、追加のjavascript /アセットファイルを提供していますか? – FrankerZ

+0

JavaScriptファイルをindex.htmlにリンクしています。 「提供」はws.jsで行う必要がありますか? – musikreck

+0

Webページにアクセスすると、ノードサーバーのindex.htmlファイルが応答してそのファイルをダウンロードします。あなたのindex.htmlに ''がある場合、ブラウザは 'bundle.js'(ws.jsファイルが扱えないもの)をリクエストするようにサーバに別のリクエストを行います。静的コンテンツを提供するための[this](https://github.com/expressjs/serve-static)をチェックしてみてください。 – FrankerZ

答えて

1

現在、index.htmlファイル以外のnode.jsサーバーからサービスを提供していません。

Webページにアクセスすると、ノードサーバーのindex.htmlファイルが応答してそのファイルをダウンロードします。あなたのindex.htmlに<script src="bundle.js"></script>がある場合、ブラウザはサーバに別のリクエストをしてbundle.js(あなたのws.jsファイルが処理しないもの)を要求します。静的コンテンツの配信についてthisをチェックしてみてください。

+0

チャームのように働いた!リンクは特に便利でした:) – musikreck

関連する問題