2016-05-07 3 views
0

私はPHPのバックグラウンドですが、Node/Expressサイトを初めて試用しています。私はexpress-generatorを使って、localhost上で動作する基本的なスケルトンを得ました。また、npmを使ってハイチャートをインストールし、instructions given by highchartsに従ってrequire()経由でプロジェクトに追加しました。 )Node.js/expressはconsole.logを出力せず、highcharts.jsは未定義エラーを返します

1)はconsole.log(DEBUGを実行しているときに端末またはブラウザのコンソールに出力されていません。

var express = require('express'); 
 
var Highcharts = require('highcharts'); 
 
var router = express.Router(); 
 

 
// Load module after Highcharts is loaded 
 
require('highcharts/modules/exporting')(Highcharts); 
 

 
console.log(Highcharts); 
 

 
// Create the chart 
 
Highcharts.chart('container', { /*Highcharts options*/ }); 
 

 
/* GET home page. */ 
 
router.get('/', function(req, res, next) { 
 
    res.render('index', { title: 'Express' }); 
 
}); 
 

 
module.exports = router;

私は2つの質問がある:私は今、私のindex.jsでこれを持っています= project:* npm start。私がチェックしていない他のものに出力しているのですか、これを見るためにもっと何かする必要がありますか?

2)require( 'highcharts/modules/exporting')(ハイチャート); TypeError:未定義のプロパティ 'document'を読み取ることができません。 /Applications/MAMP/htdocs//node_modules/highcharts/modules/exporting.js:9:115
どこがうまくいったのですか?

+0

ハイチャートはクライアント側のフレームワークであり、サーバーにはロードされません。フロントエンドのhighchartsオブジェクトにアクセスする必要があります。このリンクを参照してください:http://www.highcharts.com/docs/getting-started/installation。あなたが参照しているnpmコードは、フロントエンドでrequirejsのようなものを使用している場合です。 – user2263572

+0

'highcharts/modules/exporting'はノードモジュールではなく[ブラウザ専用コード](http://www.highcharts.com/docs/export-module/export-module-overview)です。スクリプトがその行に達する前にエラーが発生するため、コンソールログを取得しません。 –

答えて

1

あなたがrequire()を使用しているにリンクHighchartsの例では、多くの人々が自分の好きなノードのイディオムを使用し続けるとisomorphic designのいくつかのレベルを維持するためには、Browserifyを通じて、ブラウザのコードを実行することであることを理由。

それでも、Highchartsはブラウザ用であり、Nodeでは使用できません。あなたのExpressアプリケーションは、何らかの方法でハイチャートをロードするHTMLページを配信することになっています。あなたはBrowserifyの使用に制限されていませんが、このユースケースでは一般的な選択です。

また、ログをどこで探すかについての不確実性については、常に端末を使用してください。あなたのノードプログラムは、Node Inspectorのような派手なものを使って行うことをやめない限り、決してのログをブラウザコンソールに記録します。

+0

優れた詳細な答え、ありがとう。物事は今私にはもう少し意味が分かり始めています。 console.logの問題については、理由はわかりませんが、今は動作し始めています。私は、ファイルの保存/デバッグの実行の順序を乱したと仮定するか、console.log()に達する前にアプリを別の時間にクラッシュさせてしまった - 率直に私は知らない。関係なく、おかげでおかげで! – jblx

+0

うまくいけばうれしいです。私はあなたがなぜ以前にはうまくいかなかったのか、あなたが正しいと思う。 Nodeがエラーを起こしやすくする方法の1つは、この小さな文字列をすべてのファイルの先頭に追加することです: '' use strict '; '参照:http://justbuildsomething.com/node-js-best-practices/#4 –

0

エラーを見てみましょう:ブラウザのAPIであるdocumentを探して

require('highcharts/modules/exporting')(Highcharts); is throwing TypeError: Cannot read property 'document' of undefined

その、HighChartsはクライアント側だけです。

+0

感謝します、ありがとう。私はまだ、サーバーサイドのJS対クライアントサイドの考え方と、これらのことがノード/エクスプレスアプリでどのように分離されているのか、ちょっと困惑していると思います。 – jblx

関連する問題