2016-05-07 49 views
0

我来自PHP背景,但第一次尝试使用Node/Express站点。我已经成功地使用了快速生成器来获取在本地主机上运行的基本骨架。我也通过npm安装了highcharts,并通过instructions given by highcharts通过require()将其添加到我的项目中。我现在有这在我的index.js:Node.js/Express不输出console.log,highcharts.js给出未定义的错误

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;

我有两个问题:

1)执行console.log()运行DEBUG时,不输出到终端或浏览器控制台=项目:* npm开始。它是否输出到其他我没有检查过的东西,还是我需要做更多的事情来看看?

2)require('highcharts/modules/exporting')(Highcharts);抛出TypeError:无法在/Applications/MAMP/htdocs//node_modules/highcharts/modules/exporting.js:9:115
处读取未定义的 的属性“文档”我在哪里搞乱了?

+0

Highcharts是一个客户端框架,您不会将其加载到您的服务器上。您需要访问前端的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),而不是Node模块。您没有获得控制台日志,因为您的脚本在达到该行之前出错。 –

回答

1

的原因,您链接到使用require()的Highcharts例子是,许多人通过Browserify运行他们的浏览器代码,以继续使用他们喜爱的节点成语和维护的isomorphic design某一水平。

尽管如此,Highcharts仍然适用于浏览器,无法在Node中使用。您的快速应用程序应该通过某种方式提供自己加载Highcharts的HTML页面。您不限制使用Browserify,但它是此用例的热门选择。

另外,至于你在哪里寻找日志的不确定性:总是终端。你的节点程序将从不登录到浏览器控制台,除非你用自己的方式使用像Node Inspector这样的花式东西来做到这一点。

+0

非常详细的答案,谢谢。现在事情开始变得更加有意义了。至于console.log问题,我不知道为什么,但它现在已经开始工作。我只能假设我搞乱了文件保存/运行调试的顺序,或者在console.log()达到之前崩溃了其他应用程序 - 坦率地说,我不知道。不管多谢! – jblx

+0

很高兴你能工作。我怀疑你是对的,为什么它不工作。一种让Node更加嘈杂的方法是将这个小字符串添加到每个文件的顶部:''use strict';'参见:http://justbuildsomething.com/node-js-best-practices/#4 –

0

采取一个看看错误:

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

其寻找document这是一个浏览器API,HighCharts仅仅是客户端。

+0

有道理,谢谢。我想我对服务器端JS和客户端的想法仍然有些困惑,以及这些东西在节点/快速应用程序中是如何分离的。 – jblx