我正在使用 React、React Hardware ([ https://github.com/iamdustan/react-hardware/] ) 和 Johnny-Five 和 Particle Photon。当我运行我的 lib/app.js 文件时,会出现以下错误堆栈:
# Fatal error in ../deps/v8/src/api.cc, line 1062
# Check failed: !value_obj->IsJSReceiver() || value_obj->IsTemplateInfo().
#
==== C stack trace ===============================
0 node 0x00000001008c5ecd v8::base::debug::StackTrace::StackTrace() + 19
1 node 0x00000001008c4be5 V8_Fatal + 233
2 node 0x0000000100146438 v8::Template::SetAccessorProperty(v8::Local<v8::Name>, v8::Local<v8::FunctionTem
plate>, v8::Local<v8::FunctionTemplate>, v8::PropertyAttribute, v8::AccessControl) + 0
3 serialport.node 0x00000001044ab098 SerialportPoller::Init(v8::Local<v8::Object>) + 248
4 serialport.node 0x00000001044a98ed init + 1201
5 node 0x00000001007c681a node::DLOpen(v8::FunctionCallbackInfo<v8::Value> const&) + 860
6 node 0x000000010016a808 v8::internal::FunctionCallbackArguments::Call(void (*)(v8::FunctionCallbackInfo<
v8::Value> const&)) + 340
7 node 0x00000001001b1fdf v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespa
ce)::HandleApiCallHelper<false>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::Heap
Object>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::Handle<v8::internal::Object>, v8::internal::BuiltinArguments)
+ 915
8 node 0x00000001001b15b9 v8::internal::Builtin_Impl_HandleApiCall(v8::internal::BuiltinArguments, v8::int
ernal::Isolate*) + 281
9 ??? 0x00000a3cdd6043a7 0x0 + 11256528389031
10 ??? 0x00000a3cdd80a246 0x0 + 11256530510406
[1] 69327 illegal hardware instruction node lib/app.js
这有点令人费解,因为我不知道硬件应该如何工作。
这是我的 src/app.js:
import React, {Component} from 'react';
import ReactHardware from 'react-hardware';
import five from 'johnny-five';
import Particle from 'particle-io';
class BlinkingLed extends Component {
componentDidMount() {
this.node = new five.Led(this.props.port);
this.node.blink(this.props.period);
}
componentWillReceiveProps(nextProps) {
if (this.props.period !== nextProps.period) {
this.node.blink(nextProps.period);
}
}
render() {
return null;
}
}
BlinkingLed.defaultProps = {
port: 13,
period: 500,
};
ReactHardware.render(
<BlinkingLed port={11} period={500} />,
new five.Board({
io: new Particle({
token: process.env.PARTICLE_TOKEN,
deviceId: process.env.PARTICLE_DEVICE_ID
})
}),
(inst) => {
console.log('Rendered <%s />', BlinkingLed.name);
}
);
这是我的 package.json 在下面。请注意,我在 JSX 中使用了 Brunch、Babel 和 React:
{
"name": "react-particle",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build": "babel src -d lib"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"johnny-five": "^0.10.7",
"particle-io": "^0.14.0",
"react": "15.0.0-rc.1",
"react-hardware": "^0.5.0-alpha.2"
},
"devDependencies": {
"babel-cli": "^6.24.1",
"babel-preset-env": "^1.3.2",
"babel-preset-react": "^6.24.1"
}
}