nodejs

2016-08-03 11 views
1

にDocumentオブジェクトを使用して、私はまだJavaScriptとNode.jsのに新たなんだし、何かを達成しようとしていたが、私はエラーにReferenceErrorが発生した午前:別々のファイルに次のコードを考えるnodejs

を定義していないドキュメント:

Index.htmlと:

<!DOCTYPE html> 
<html> 
<head> 
    <title>My Test Website</title> 
    <script type="text/javascript" src="script.js"></script> 
    <link rel="stylesheet" href="style.css"> 
</head> 
<body> 
    <p id="para1"> Some text here</p> 
</body> 
</html> 

そしてscript.js:

function getParagraphContents() { 
    var paragraph = document.getElementById("para1"); 
    var temp = paragraph.textContent; 
    console.log(temp); 
} 

だから私の問題は、コマンドラインからコマンドnode script.jsを実行できるようにしたいが、エラーメッセージが表示され続けることである。私は他の回答とドキュメントを読んでいますが、何も正しい答えではないようです。助言がありますか? P.S.私はmac osx上でterminalを使用しており、nodeとnpmが正しくインストールされています。

ありがとうございます。

+0

なぜそれが必要ですか? –

+1

Node.jsでclientsideスクリプトを実行することはできません。これは動作しません。そのスクリプトはサーバーではなくブラウザ用です。 – adeneo

+0

'script.js'はブラウザで動作し、現在のページのHTMLを操作するように設計されています。 'node script.js'を実行しても意味がありません。 HTML文書をノードにロードし、そのDOM表現を提供するライブラリを見つけることができますが、ブラウザ上のスクリプトを実行することができます。これは、関連するドキュメントがないため、ここでは試していません。 'script.js'はまったくありません。それは単なるスクリプトです。したがって、 'node script.js'を実行することはアプリケーションの半分に似ています。ノードから何を達成しようとしているのか説明する必要があります。 – jfriend00

答えて

0

script.jsは、node.jsではなくブラウザで実行するように設計されたスクリプトです。現在のWebページ上で動作するように設計されており、documentオブジェクトを使用してそのページにアクセスします。

node.js実行環境は、ブラウザと同じではありません。たとえば、ブラウザにあるような「現在のページ」という概念は存在しないため、ブラウザーにあるようにグローバルdocumentまたはwindowオブジェクトは存在しません。

これは、なぜnode script.jsを実行しようとしても動作しない理由を説明しています。グローバルdocumentオブジェクトはありませんので、スクリプトはすぐにエラーを生成して終了します。


あなたが本当にNode.jsの環境でスクリプトを実行している対ブラウザで実行されるスクリプトの違いを理解していない場合は私たちは本当にあなたの質問から言うことができない、それはあなたが説明したために必要なすべてのですまたはnode.js内のHTML文書を実際に操作したい場合は?

node.jsからHTMLページを操作することは可能ですこれを行う通常の方法は、jsdomのようなHTML解析ライブラリを取得することです。そのライブラリを使用してHTMLページを読み込むと、シミュレートされたブラウザDOMが作成され、documentオブジェクトを利用できるようになり、HTML文書でブラウザのようなスクリプトを実行できます。

+0

jfriend00さん、ありがとうございました。私はちょうどどのノードjsが本当にわからなかった。私はスクリプトがブラウザでどのように動作するのか理解していますが、ノードでどのように動作するのかはわかりません。 – unChartedZone