调用wia报Class constructor Wia cannot be invoked without 'new'如何修复
错误原因
- 你当前使用的
wiaSDK为较新版本,官方已将导出内容改为类构造函数,不再支持旧版本直接调用require('wia')(设备密钥)的工厂函数写法,因此不使用new关键字实例化就会抛出该报错。
修复方法
- 替换原代码第二行的wia初始化逻辑,原错误代码:
var wia = require('wia')('your-device-secret-key');
- 修改为以下写法即可,记得替换为你自己的设备密钥:
// 先引入Wia类 var Wia = require('wia'); // 用new关键字实例化,传入设备密钥 var wia = new Wia('your-device-secret-key');
其余代码不需要做任何修改,原有的wia.events.publish等调用逻辑都可以正常运行。
修改后完整代码
'use strict'; var Wia = require('wia'); var wia = new Wia('your-device-secret-key'); // 替换为你自己的设备密钥 var fs = require('fs'); var RaspiCam = require("raspicam"); // 初始化摄像头 var camera = new RaspiCam({ mode: 'photo', output: __dirname + '/photo.jpg', encoding: 'jpg' }); // 监听拍照启动事件 camera.on("start", function(){ console.log("Starting to take photo."); }); // 监听照片保存完成事件 camera.on("read", function(err, timestamp, filename){ console.log("New photo created.", timestamp, filename); // 把照片发布到Wia wia.events.publish({ name: 'photo', file: fs.createReadStream(__dirname + '/' + filename) }); }); // 启动拍照 camera.start();
内容的提问来源于stack exchange,提问作者kwalala
相关产品推荐
相关产品推荐

