ইলেক্ট্রন সহ স্ক্লাইট 3 মডিউলটি কীভাবে ব্যবহার করবেন?


91

আমি কমান্ডটি দিয়ে এনপিএম এর মাধ্যমে ইনস্টল করা sqlite3 প্যাকেজটি ব্যবহার করে এমন ইলেক্ট্রন ব্যবহার করে ডেস্কটপ অ্যাপ বিকাশ করতে চাই

npm install --save sqlite3

তবে এটি ইলেক্ট্রন ব্রাউজার কনসোলে নিম্নলিখিত ত্রুটিটি দেয়

Uncaught Error: Cannot find module 'E:\allcode\eapp\node_modules\sqlite3\lib\binding\node-v45-win32-x64\node_sqlite3.node'

আমার বিকাশের পরিবেশটি উইন্ডোজ 8.1 x64 নোড সংস্করণ 12.7

আমার প্যাকেজ.জসন ফাইলটি দেখতে এমন দেখাচ্ছে:

{
  "name": "eapp",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "electron ."
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "electron-prebuilt": "^0.32.1"
  },
  "dependencies": {
    "angular": "^1.3.5",   
    "sqlite3": "^3.1.0"
  }
}

index.js ফাইল

var app = require('app');
var BrowserWindow = require('browser-window'); 
require('crash-reporter').start();
var mainWindow = null;


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

app.on('ready', function() {
    // Create the browser window.
    mainWindow = new BrowserWindow({width: 800, height: 600}); 
    mainWindow.loadUrl('file://' + __dirname + '/index.html');   
    mainWindow.openDevTools();  
    mainWindow.on('closed', function() {       
        mainWindow = null;
    });
});

my.js ফাইল

var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('mydb.db');

db.serialize(function() {
    db.run("CREATE TABLE if not exists lorem (info TEXT)");

    var stmt = db.prepare("INSERT INTO lorem VALUES (?)");
    for (var i = 0; i < 10; i++) {
        stmt.run("Ipsum " + i);
    }
    stmt.finalize();

    db.each("SELECT rowid AS id, info FROM lorem", function(err, row) {
        console.log(row.id + ": " + row.info);
    });
});

db.close();

index.html ফাইল

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<div >
    <div>
        <h2>Hello</h2>
    </div>

</div>
<!--<script src="js/jquery-1.11.3.min.js"></script>-->
<script src="js/my.js"></script>
</body>
</html>

উত্তর:


126

ইলেক্ট্রন সহ এসকিউএলাইট ব্যবহারের সবচেয়ে সহজ উপায়টি রয়েছে electron-builder

প্রথমে আপনার প্যাকেজ.জসনে একটি পোস্ট-ইনস্টল স্টেপ যুক্ত করুন:

"scripts": {
   "postinstall": "install-app-deps"
   ...
}

এবং তারপরে প্রয়োজনীয় নির্ভরতাগুলি ইনস্টল করুন এবং তৈরি করুন:

npm install --save-dev electron-builder
npm install --save sqlite3
npm run postinstall

ইলেক্ট্রন-নির্মাতা আপনার প্ল্যাটফর্মের জন্য ইলেক্ট্রন বাঁধার সঠিক নাম সহ নেটিভ মডিউলটি তৈরি করবেন; এবং আপনি তারপর করতে পারেনrequire এটি কোড হিসাবে সাধারণ হিসাবে ।

আমার গিথুব রেপো এবং ব্লগ পোস্ট দেখুন - এটি এড়াতেও আমাকে বেশ সময় লেগেছে।


4
আপনার ইলেক্ট্রন-বয়লারপ্লেট-স্ক্লাইট ব্যবহার করা সত্যই সহজ পদ্ধতি তবে এর সাথেnpm install
বার্নার্ডো রামোস

4
'এনপিএম রান পোস্টিনস্টল' চালানোর সময় আমি এই ত্রুটিটি পেয়েছি "একবারে এই সমাধানে প্রকল্পগুলি তৈরি করা ralle সমান্তরাল বিল্ড সক্ষম করতে, দয়া করে" / এম "স্যুইচটি যুক্ত করুন।
চিরাগ

এটি আমার আড়াল একবারে নয়, এ পর্যন্ত দু'বার বাঁচিয়েছে!
জন নেসবিট

--save sqlite3বিকল্পটি প্রথম লাইনে (সহ --save-dev electron-builder) নির্ভরযোগ্যভাবে ট্যাগ করা যেতে পারে কিনা তা কি কেউ জানেন , যেখানে npm installকেবল একবার চালানো হবে?
ফিলিপ

এটি আমার পক্ষে কাজ করে না, আমি `../../nan/nan_object_wrap.h:67:18 এর মতো ত্রুটি পেয়েছি: ত্রুটি: 'শ্রেণি নান :: পার্সেন্ট্যান্ট <ভি 8 :: অবজেক্ট>' এর 'মার্ক ইন্ডিসেপেন্ডেন্ট' নামে কোনও সদস্য নেই `
মাইকেল 1

21

আমি নেটিভ নোড স্ক্লাইট 3 মডিউলটি সুপারিশ করব না। ইলেকট্রন দিয়ে কাজ করার জন্য এটি পুনর্নির্মাণ করা দরকার। এটি করার একটি বিশাল ব্যথা - কমপক্ষে আমি কখনই এটি কাজ করতে পারি না এবং উইন্ডোজগুলিতে মডিউলগুলি পুনর্নির্মাণের জন্য তাদের কোনও নির্দেশনা নেই।

পরিবর্তে ক্রিপকেনের 'sql.js' মডিউলটি দেখুন যা sqlite3 যা জাভাস্ক্রিপ্টে 100% সংকলিত হয়েছে। https://github.com/kripken/sql.js/


4
ইলেক্ট্রন ডক্স খুব স্পষ্ট যে বান্ডিল দেশীয় মডিউলগুলি ব্যবহার করার জন্য আপনাকে বৈদ্যুতিনের সাথে কাজ করার জন্য সেগুলি পুনর্নির্মাণ করতে হবে। হয় ইলেকট্রন-পুনর্নির্মাণ ইউটিলিটি ব্যবহার করুন যা বেশিরভাগ সময় কাজ করে বা ম্যানুয়ালি জিপ ফ্ল্যাগগুলি সেট করে: electron.atom.io/docs/tutorial/used-native-node-modules
ব্রেট

4
ধীর প্রতিক্রিয়ার জন্য দুঃখিত। github.com / ইলেক্ট্রন / ইলেক্ট্রন- পুনর্নির্মাণ বিকাশের পুনর্নির্মাণের একটি সহজ সরঞ্জাম। github.com/electron-userland/electron-builder/wiki/… প্রোডাকশন বিল্ডগুলির জন্য একটি বহু-প্ল্যাটফর্ম বিল্ড কৌশল বর্ণনা করে। জুট মনে রাখবেন, একবার আপনি নেটিভ ডিপগুলি পরিচয় করিয়ে দেওয়ার পরে, আপনি বিভিন্ন ওএসের সংকলন পার করার ক্ষমতা হারাবেন। github.com/nodejs/node-gyp#installation এ প্রয়োজনীয় উইন্ডোজ সংকলক সরঞ্জামগুলিতে শালীন ডক্স রয়েছে।
ব্রেট

4
এই মন্তব্যগুলির কোনওটিই এই উত্তরের সাথে প্রাসঙ্গিক নয়!
ব্যবহারকারীর 3791372

14
এটি উল্লেখ করা উচিত যে sql.js ফাইল সিস্টেমে কাজ করতে পারে না। প্রতিবার আপনাকে ডাটাবেস পরিবর্তন করতে হবে আপনাকে পুরো জিনিসটি ডিস্কে লিখতে হবে। বেশিরভাগ দৃশ্যের জন্য এটিকে বেশ অকেজো করে তোলা।
মোড777

4
sql.js এটি আরও খেলনার মতো, মজাদার জন্য তৈরি। এটি NeDB এবং অন্যান্য nosql ডাটাবেসগুলির চেয়ে ভাল হতে পারে না, কারণ এটি মেমরিতে সমস্ত ডাটাবেস সঞ্চয় করে। সুতরাং এটি ব্যবহার করার কোনও ভাল কারণ নেই। ছোট ডাটাবেসের জন্য এনডিবি-র মতো এনএসকিএল ব্যবহার করুন, বৃহত্তর জন্য আপনাকে স্কাইলাইট সংকলন করতে হবে
ডাইমোস

10

দুটি বিষয় এখানে বিবেচনা করা হয়:

  1. সেটিং NODE_PATH: এটি আপনার মডিউলগুলি কোথায় খুঁজে পাবেন তা ইলেক্ট্রনকে জানতে দেয় ( এই উত্তরটি দেখুন পুরো ব্যাখ্যাটির জন্য )
  2. বৈদ্যুতিন শিরোলেখগুলির বিরুদ্ধে নেটিভ মডিউলগুলি সংকলন: অফিসিয়াল দেখুন ডক্স দেখুন

এবং নিম্নলিখিত প্রশ্নগুলি চেকআউট করুন, যা একই জিনিস জিজ্ঞাসা করে:


আমার ডগা দিতে হবে lovefield করে দেখুন (Google দ্বারা)।


নোডেউবকিটে, আমাকে অবশ্যই স্ক্লাইটটি সংকলন করতে হবে। একই নিয়ম ইলেক্ট্রনের জন্য প্রয়োগ?
ওয়েক্সনি

@ ওয়েক্সনি এএফাইক, নেটিভ বাইন্ডিং সহ প্রতিটি নোড মডিউল অবশ্যই বৈদ্যুতিন শিরোলেখের বিরুদ্ধে সংকলন করতে হবে।
ইয়ান ফটো

4
@ ওয়েক্সনি আমি এনডাব্লুয়ের সাথে কাজ করি নি, তবে আমি জানি যে sqlite3এটি ইলেক্ট্রনে ব্যবহার করতে সক্ষম হওয়ার আগে সংকলন করতে হবে। আমি কি আপনার প্রশ্নটি সঠিকভাবে বুঝতে পারছি?
ইয়ান ফটো

4
@ ইয়ানবার্ট্র্যান্ড এখনও তাদের নিজস্ব শিরোলেখ ব্যবহার করে। সুতরাং আমি মনে করি আপনার এখনও তাদের হেডারগুলির তুলনায় এটি সঙ্কলন করতে হবে।
ইয়ান ফটো

4
আপনার টিপ প্রেমক্ষেত্রের জন্য ধন্যবাদ। এটি সত্যিই একটি দুর্দান্ত গ্রন্থাগার।
মোস্তাসিম বিল্লাহ

7

আমারও একই সমস্যা ছিল সবকিছুই চেষ্টা করেছিলাম এবং এটি আমার জন্য কাজ করেছিল অ্যাটলাস্ট: -

npm install --save sqlite3
npm install --save electron-rebuild
npm install --save electron-prebuilt
.\node_modules\.bin\electron-rebuild.cmd

এটি "ইলেক্ট্রন-ভি 1.3-উইন 32-এক্স 64" ফোল্ডারটি তৈরি করবে \ ode node_modules \ sqlite3 b lib \ বাঁধাই \ অবস্থান যা ইলেক্ট্রন দ্বারা sqlite3 ব্যবহার করতে ব্যবহৃত হয়।

কেবল অ্যাপ্লিকেশন শুরু করুন এবং আপনি এখন sqlite3 ব্যবহার করতে সক্ষম হবেন।


এটি কেবল একটি খালি ফোল্ডার তৈরি করেছে, তবে node_sqlite3.nodeএটিতে এখনও কোনও ফাইল নেই
মেহেদি দেহঘনি

ইলেক্ট্রন-প্রাক-বিল্টের নামকরণ করা হয়েছে ইলেক্ট্রন। আরও তথ্যের জন্য, electron.atom.io/blog/2016/08/16/npm-install-electron দেখুন
জ্যাকব নেলসন

6

একটি সহজ সমাধান:

  1. ইলেক্ট্রন পুনর্নির্মাণ ইনস্টল করুন npm i electron-rebuild --save-dev
  2. ইলেক্ট্রন-পুনর্নির্মাণ চালু করুন ./node_modules/.bin/electron-rebuild(বা.\node_modules\.bin\electron-rebuild.cmd উইন্ডোতে)
  3. " নোড_মডিউলস / স্ক্লাইট 3 / লাইব / বাইন্ডিং / " এ যান এবং " ইলেক্ট্রন-ভি0.36-ডারউইন-এক্স 64 " ফোল্ডারটির নাম পরিবর্তন করে " নোড- ভি 47 -দারভিন-এক্স 64 " করুন

পিএস: ভি 47 আমার সংস্করণ, ভালটি বেছে নিতে সাবধান হন (আপনার ক্ষেত্রে ভি 45 )


4
আপনি তৃতীয় পদক্ষেপ ব্যাখ্যা করতে পারেন? নামকরণ কেন?
m4heshd

4
npm install --save sqlite3
npm install --save-dev electron-rebuild

তারপরে, আপনার প্যাকেজ.জসনের স্ক্রিপ্টগুলিতে এই লাইনটি যুক্ত করুন:

"scripts": {
  "postinstall": "electron-rebuild",
  ...
},

তারপরে পোস্ট-ইনস্টলটি ট্রিগার করতে কেবল পুনরায় ইনস্টল করুন:

npm install

ইলেক্ট্রন-নির্মাতা, ইলেক্ট্রন-ওয়েবপ্যাক এবং সিক্যুয়ালাইজ জড়িত একটি জটিল ব্যবহারের ক্ষেত্রে নির্দ্বিধায় আমার জন্য কাজ করে।

এটি বৈদ্যুতিন-ওয়েবপ্যাকের ডেভ মোডে এবং উইন্ডোজ এবং লিনাক্স উভয়ের জন্য উত্পাদন মোডে কাজ করে।


3

আমি এই ত্রুটিও সম্মুখীন। আমি এখানে এটি কীভাবে সমাধান করব তা npm install --save-dev electron-rebuild : ./node_modules/.bin/electron-rebuild

থেকে: https://electronjs.org/docs/tutorial/used-native-node-modules

PS: এটি পুনর্নির্মাণের সময়, npm startবৈদ্যুতিন অ্যাপ্লিকেশন লঞ্চ করতে ব্যবহার করবেন না । অন্যথায় পুনর্নির্মাণ প্রক্রিয়া ব্যর্থ হবে।


3

এটা তোলে সংস্করণ 3 এবং 4, দুর্ভাগ্যবশত না সংস্করণ 5. বিস্তারিত জানার জন্য sqlite3 ডকুমেন্টেশন আমার জন্য কাজ করে: https://www.npmjs.com/package/sqlite3#custom-builds-and-electron বা অন্যথায় নিম্নলিখিত লাইন সঞ্চালন করুন:npm install sqlite3 --runtime=electron --target=4.0.0 --dist-url=https://atom.io/download/electron


এটি স্ক্লাইট 3 এবং ইলেক্ট্রন 8.3.0 নিয়ে আমার সমস্যা ছিল এবং এটি কাজ করে, ধন্যবাদ।
শায়ানা কাইরাভেদ পাহল

2

এখানে একটি অনুরূপ উত্তর তাকান

টিএল; ডিআর

cd .\node_modules\sqlite3
npm install nan --save
npm run prepublish
node-gyp configure --module_name=node_sqlite3 --module_path=../lib/binding/electron-v1.3-win32-x64
node-gyp rebuild --target=1.3.2 --arch=x64 --target_platform=win32 --dist-url=http://electron.atom.io/ --module_name=node_sqlite3 --module_path=../lib/binding/electron-v1.3-win32-x64

4
স্ক্রিপ্ট prepublishকেমন দেখাচ্ছে?
ভিক্টর ইভেনস

0

আপনি ভিজ্যুয়াল স্টুডিও ব্যবহার করে ম্যানুয়ালি নেটিভ মডিউলগুলি তৈরি করতে পারেন।

  1. ভিজ্যুয়াল স্টুডিও 2019 ডাউনলোড করুন।
  2. "সি ++ দিয়ে ডেস্কটপ বিকাশ" প্যাকেজটি ইনস্টল করুন। ইনস্টলেশন বিশদ বিবরণ ট্যাবে "এমএসভিসি v140 - ভিএস 2015 সি ++ বিল্ড সরঞ্জাম (v14.00)" নির্বাচন করুন
  3. আপনার প্রকল্পে বৈদ্যুতিন-নির্মাতা ডাউনলোড করুন।
  4. প্যাকেজ.জসনে একটি স্ক্রিপ্ট তৈরি করুন। "স্ক্রিপ্টস": post "পোস্টইনস্টল": "ইনস্টল-অ্যাপ-ডেপস"}

  5. তারপরে স্ক্রিপ্টটি চালান।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.