2017-04-07 22 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時纔會出現該錯誤。