Node.js/Express未输出console.log,highcharts.js给出未定义的错误

Node.js/Express not outputting console.log, highcharts.js giving undefined error

本文关键字:js highcharts 错误 未定义 log Express 未输 输出 console Node      更新时间:2023-09-26

我来自PHP背景,但第一次尝试Node/Express网站。我已经成功地使用express生成器使基本骨架在localhost上运行。我还通过npm安装了highcharts,并按照highcharts给出的说明通过require()将其添加到我的项目中。我现在在我的index.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) 当运行DEBUG=project:*npm-start时,console.log()不会输出到终端或浏览器控制台。它是输出到其他我没有检查的东西,还是我需要做更多的事情来查看它?

2) require("highcharts/modules/exporting")(highcharts);正在引发TypeError:无法读取未定义的属性"document"位于/Applications/MAMP/htdocs/node_modules/hightcharts/modules/exporting.js:9:15
我哪里搞砸了?

您链接到的Highcharts示例使用require()的原因是,许多人通过Browserify运行浏览器代码,以便继续使用他们喜欢的Node习惯用法并保持一定程度的同构设计。

尽管如此,Highcharts仍然适用于浏览器,不能在Node中使用。您的Express应用程序应该提供一个HTML页面,该页面本身通过某种方式加载Highcharts。您不局限于使用Browserify,但它是这个用例的一个流行选择。

此外,对于您在哪里查找日志的不确定性:始终是终端。您的Node程序将永远不会登录到浏览器控制台,除非您使用Node Inspector之类的花哨功能来让它们登录。

查看错误:

require("highcharts/modules/exporting")(highcharts);正在引发TypeError:无法读取未定义的属性"document"

它正在寻找document,这是一个浏览器API,HighCharts只是客户端。