2015-10-07 16 views
5

में नोड मूल एडॉन्स (सी ++) को कॉल करना मैं नोड जेएस और इलेक्ट्रॉन के लिए बिल्कुल नया हूं। मैं इलेक्ट्रॉन और नोड जेएस का उपयोग कर एचटीएमएल के साथ सी ++ को एकीकृत करने की कोशिश कर रहा हूं। मैंने कुछ उदाहरणों के माध्यम से दिया है: GITइलेक्ट्रॉन

जो मैं करने की कोशिश कर रहा हूं वह मेरे वेब पेज के जावास्क्रिप्ट से देशी फ़ंक्शन (हैलो()) को कॉल कर रहा है जो इलेक्ट्रॉन द्वारा लोड किया गया है। मैंने अपनी विजुअल स्टूडियो सॉल्यूशन फ़ाइल जेनरेट करने के लिए node-gyp configure का उपयोग किया है। (। एसएलएन)। और बाद में मैंने विजुअल स्टूडियो 2013 एक्सप्रेस के साथ अपना कोड संकलित किया जो सफलतापूर्वक उत्पन्न करता है। बिल्ड \ रिलीज़ फ़ोल्डर में फ़ाइल को सफलतापूर्वक उत्पन्न नहीं करता है।

यह मेरा index.js फ़ाइल है:

var addon = require('./build/Release/hello.node'); 
console.log(addon.hello()); 

जब मैं बस node index.js के साथ इस चलाने के लिए, यह मुझे वांछित आउटपुट दे रहा है:

world 

लेकिन समस्या के साथ जब मैं का उपयोग करें आता है इलेक्ट्रॉन। मैं अपने वेबपृष्ठ को चलाने के लिए इलेक्ट्रॉन बाइनरी (32 बिट) का उपयोग कर रहा हूं। जब मैं इस चलाने के लिए या इस लोड

//************* My Functional logic ************** 
//************************************************ 

var addon = require('../build/Release/hello'); 
alert(addon.hello()); 

:

var app = require('app'); // Module to control application life. 
var BrowserWindow = require('browser-window'); // Module to create native browser window. 


require('crash-reporter').start(); 

var mainWindow = null; 

// Quit when all windows are closed. 
app.on('window-all-closed', function() { 
    if (process.platform != 'darwin') { 
    app.quit(); 
    } 
}); 

// This method will be called when Electron has finished 
// initialization and is ready to create browser windows. 
app.on('ready', function() { 
    mainWindow = new BrowserWindow({width: 1366, height: 768}); 
    mainWindow.loadUrl("file://" + __dirname + "/HtmlFile/index.html"); 
    mainWindow.on('closed', function() { 
    mainWindow = null; 
    }); 
}); 

अब यह मेरा जावास्क्रिप्ट मैं कहाँ देशी ऐड-ऑन फोन कर रहा हूँ है:

निम्नलिखित मेरी main.js फ़ाइल है पेज, मुझे निम्न त्रुटि मिल रही है:

Uncaught Error: %1 is not a valid Win32 application. ATOM_SHELL_ASAR.js:137 
C:\Users\Administrator\Desktop\MyAPP\build\Release\hello.node 

निम्नलिखित है मेरी package.json:

{ 
    "name": "MyAPP", 
    "version": "1.0.0", 
    "description": "Desc", 
    "main": "main.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "", 
    "license": "ISC", 
    "dependencies": { 
    "nan": "^2.0.9" 
    }, 
    "gypfile": true 
} 

यह मेरा binding.gyp:

{ 
    "targets": [ 
    { 
     "target_name": "hello", 
     "sources": [ "hello.cc" ], 
     "include_dirs": [ 
     "<!(node -e \"require('nan')\")" 
     ] 
    } 
    ] 
} 
+0

मैं जब '--arch = ia32' ध्वज का उपयोग कर एक ही मुद्दे में चल रहा हूँ में .npmrc का उपयोग कर स्थापित करने के लिए जब मैं का उपयोग' - arch = x64' ध्वज मुझे 'असीमित त्रुटि प्राप्त होती है: सिस्टम को% 2 के लिए संदेश फ़ाइल में संदेश संख्या 0x% 1 के लिए संदेश पाठ नहीं मिल रहा है। हालांकि, अगर मैं' नोड '/' के साथ कमांड चलाता हूं तो यह प्रिंट करता है "दुनिया "उम्मीद के अनुसार कमांड लाइन पर। यह भी कोड इलेक्ट्रॉन में मैकोज़ पर काम करता है, इसलिए यह विंडोज इलेक्ट्रॉन आधारित मुद्दा प्रतीत होता है। – devonbleibtrey

उत्तर

2

ऐसा लगता है कि आप सही द्विआधारी के लिए कॉन्फ़िगर नहीं हो सकता है। क्षमा करें यकीन है कि अगर यह देशी मॉड्यूल के लिए काम करेंगे, लेकिन आप rebuilding की कोशिश कर सकते नहीं ...

नोट: कृपया सुनिश्चित करें कि आपकी नोड ढकोसला आदेश के लिए सही तर्क है (यदि वह यह है कि आप कैसे पुनर्निर्माण करेंगे) ।

  • --target=<your electron version>
  • --target_platform=win32 (उदाहरण के लिंक में नहीं है, लेकिन आप खिड़कियों ज़रिये जुड़े हुए हैं)
  • --arch=<your architecture> (64 = 64 बिट, 86 = 32 बिट)
+0

मुझे अपने विकास पर्यावरण में ऐसी कोई निर्देशिका संरचना नहीं मिली है। मैं केवल इलेक्ट्रॉन बाइनरी का उपयोग कर रहा हूं मेरा ऐप चलाने के लिए। – user1636077

+0

मेरा बुरा। मुझे 3am पर प्रश्न पढ़ने की कोशिश नहीं करनी चाहिए। मैंने अपना जवाब अपडेट कर दिया है। – Josh

2

मैं में उल्लेख किया टिप्पणियां मैं इस मुद्दे पर चल रहा था। यह हल करने के लिए आप एक जोड़ी अतिरिक्त झंडे जोड़ने की जरूरत:

node-gyp rebuild --target=<your electron version> --arch=<insert your arch> --dist-url=https://atom.io/download/atom-shell 

यह atom.io साइट से उचित आवश्यकताओं मिलता है और सही ढंग से पर जोड़ने का निर्माण होगा। अधिक जानकारी के लिए आप देशी मॉड्यूल का उपयोग करने पर इलेक्ट्रॉन के विशिष्ट docs चेकआउट कर सकते हैं।

0

नोड-जीईपी का उपयोग सीधे नोडज हेडर के साथ बनाएगा, लेकिन इलेक्ट्रॉन के अलग-अलग शीर्षलेख हैं।

सबसे पहले आपको चुड़ैल इलेक्ट्रॉन संस्करण इलेक्ट्रॉन का उपयोग करना चाहिए। आप इस स्क्रिप्ट को निष्पादित करने के लिए इस

console.log(process.version); 

उपयोग इलेक्ट्रॉन की तरह एक js लिख सकते हैं, मेरी संस्करण 0.36.1 और परिवर्तन मॉड्यूल आप के बारे में

#On Windows Try this 
cd /path-to-module/ 
npm install bindings nan node-gyp 
node-gyp rebuild --target=0.36.1 --arch=x64 --dist- url=https://atom.io/download/atom-shell 
#notice the target version is the electron binary version 
1

मेरा व्यक्तिगत समस्या का निर्माण करना चाहते करने के लिए निर्देशिका है

--dist-url=https://atom.io/download/electron 

आशा है कि यह किसी को मदद मिलेगी: नोड बनाम देशी एडऑन में इलेक्ट्रॉन हेडर एक अलग जिले-यूआरएल पैरामीटर मान की आवश्यकता है।

पुनश्च:। फिर भी समझ नहीं है कि यह कैसे खिड़कियां (

+0

इसे अपने .npmrc में रखें आपके प्रोजेक्ट रूट फ़ोल्डर '' रनटाइम = इलेक्ट्रॉन \ n target_arch = x64/x86 \ n लक्ष्य = 1.7.9 <लक्ष्य संस्करण> \ n disturl = https://atom.io/download/atom- खोल \ n प्रगति = सत्य''' – niketan

+0

@niketan, लेकिन फिर मैं वैकल्पिक वास्तुकला के लिए कैसे निर्माण करूंगा? फ़ाइल हर बार बदलें? – Konstantin

संबंधित मुद्दे