Help us understand the problem. What is going on with this article?

Raspberry Pi Zero WでNode.js+SQLite3を動かしてみた

More than 1 year has passed since last update.

はじめに

Raspberry Pi Zero WでNode.jsが動くのは確認してたんですが、SQLite3って動くのかなということで、動作確認した手順のメモです。

ZeroWには執筆時点最新の、「RASPBIAN STRETCH LITE」をインストールしておきます。
Wifi(もしくはOTG)やSSHの有効化などは事前に行っておいてください。

nodebrewで最新のNode.jsをインストールする

LITE版にはNode.jsは入っていないので、nodebrewでLTSバージョンをインストールします。
まずはnodebrewから。

$ curl -L git.io/nodebrew | perl - setup

パスを通します。

$ echo "export PATH=\$HOME/.nodebrew/current/bin:\$PATH" >> ~/.bashrc

環境変数を適用します。

$ source ~/.bashrc

nodebrewが使えるようになっている事を確認します。

$ nodebrew -v
nodebrew 0.9.8

リモートのバージョンを確認します。
現時点でLTSバージョンはv8.9.4です。

$ nodebrew ls-remote
...
v8.9.1    v8.9.2    v8.9.3    v8.9.4    
...

バイナリモードでインストールします。

$ nodebrew install-binary v8.9.4
...
Installed successfully

カレントのバージョンをv8.9.4にセットします。

$ nodebrew use v8.9.4
use v8.9.4

nodeとnpmが使用できる事を確認します。

$ node -v
v8.9.4
$ npm -v
5.6.0

Node.jsのプロジェクトを作成する

適当にプロジェクトディレクトリを作成し、npm initでpackage.jsonを作っておきます。

$ mkdir Projects
$ cd Projects
$ mkdir sqlite-test
$ cd sqlite-test
$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (sqlite-test) 
version: (1.0.0) 
description: 
entry point: (index.js) 
test command: 
git repository: 
keywords: 
author: 
license: (ISC) 
About to write to /home/pi/Projects/sqlite-test/package.json:

{
  "name": "sqlite-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}


Is this ok? (yes) yes

node-sqlite3をインストールします。
package.jsonに追加するよう、--saveをつけておきます。

$ npm install sqlite3 --save

コンパイルが始まるようで、すごく時間がかかります・・・。

node-sqlite3公式のサンプルプログラムを書いてみます。

$ nano index.js
'use strict';

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

db.serialize(function() {
  db.run("CREATE TABLE 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();

動作確認

動くか確認します。

$ node index.js
1: Ipsum 0
2: Ipsum 1
3: Ipsum 2
4: Ipsum 3
5: Ipsum 4
6: Ipsum 5
7: Ipsum 6
8: Ipsum 7
9: Ipsum 8
10: Ipsum 9

動きました!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away