TypeError:无法读取null的属性“ length”-节点画布

时间:2018-08-09 08:14:52

标签: node.js canvas

我尝试在Linux上运行我的Nodejs脚本项目,该项目工作正常,但是每当我尝试在Windows中运行相同的项目时,都会引发错误。自最近几天以来,我一直在尝试解决此问题。不知道为什么我遇到这个问题。请帮助我解决此问题。预先感谢。

xyz\node_modules\bluebird\js\release\async.js:61
        fn = function () { throw arg; };
                           ^

TypeError: Cannot read property 'length' of null
at Object.acquireContext (E:\app_server\node_modules\chart.js\src\platforms\platform.dom.js:340:19)
at Chart.construct (E:app_server\node_modules\chart.js\src\core\core.controller.js:79:27)
at new Chart (E:\app_server\node_modules\chart.js\src\core\core.js:42:8)
at jsdom.envAsync.then.window (E:\app_server\node_modules\chartjs-node\index.js:106:31)
at tryCatcher (E:\app_server\node_modules\bluebird\js\release\util.js:16:23)
at Promise._settlePromiseFromHandler (E:\app_server\node_modules\bluebird\js\release\promise.js:512:31)
at Promise._settlePromise (E:\app_server\node_modules\bluebird\js\release\promise.js:569:18)
at Promise._settlePromise0 (E:\app_server\node_modules\bluebird\js\release\promise.js:614:10)
at Promise._settlePromises (E:\app_server\node_modules\bluebird\js\release\promise.js:693:18)
at Promise._fulfill (E:\app_server\node_modules\bluebird\js\release\promise.js:638:18)
at Object.done (E:\app_server\node_modules\bluebird\js\release\nodeback.js:42:21)
at process.nextTick (E:\app_server\node_modules\jsdom\lib\jsdom.js:320:18)
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)

3 个答案:

答案 0 :(得分:2)

好吧,我看起来好像您使用的是canvas-2.0.0 alpha.8库,并且它处于alpha测试阶段,某些人遇到的问题与我遇到的相同。我从这个GitHub公开问题https://github.com/vmpowerio/chartjs-node/issues/42中引用。关于canvas-2.0.0 alpha.13我也遇到了同样的问题,我将canvas 2.0.0-alpha.2降级了,它对我有用。尝试安装以下命令 npm我canvas@2.0.0-alpha.2

答案 1 :(得分:0)

此错误可能不是由“ bluebird”引起的,我认为这是因为您访问了变量的“ length”属性而该变量为null;

您可以添加整个错误提示吗?抱歉,我的声誉不足以添加评论;

答案 2 :(得分:0)

请按照以下步骤操作:

  1. 在Google Chrome浏览器中打开开发工具(其他浏览器中也有类似的工具)。
  2. 打开“来源”标签。
  3. 单击选项卡右上角的“暂停例外”按钮,该按钮看起来像八角形中的暂停符号。
  4. 选中“暂停捕获的异常”复选框。
  5. 在“开发工具”窗口仍处于打开状态时,重新创建导致错误的流程。

该代码将因错误而制动。如果制动器将使用zypper或其他未编写的代码,请沿着堆栈跟踪行进,直到碰到由您编写的行。看看这行中发生了什么,了解发生了什么问题应该很简单。