2017-04-07 63 views
0

我正在使用React,React Hardware([https://github.com/iamdustan/react-hardware/])和Johnny-Five以及粒子光子。下面这个错误堆栈来了,当我跑我的lib/app.js文件:C-Lang检查在React-Hardware/Particle中失败

# 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阵营:

{ 
    "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" 
    } 
} 
+0

错误来自node-serialport,尽管我不确定为什么 - 当在Johnny-Five中使用Particle-IO时,node-serialport不用于与主板进行通信。这留下了React硬件,我不熟悉该项目的源代码或它的执行语义。我不确定为什么甚至有必要添加该图层?它似乎没有提供任何好处或效用。 – Rick

回答

0

罪魁祸首是react-hardware。我能够隔离错误信息的发生。只有当我需要react-hardware时才会出现该错误。