-->

2018年06月

[Electron] Sqlite3を使う。の最期に書いたようにwindows-build-toolsがインストールできない。(2018年6月現在)
インストール方法がわかったんで書いておく。

ここにあるようにBuildTolls_Full.exeがインストール完了しているのに終わらないのとログファイルに終了したことが出力されないで、ずーっと待ち状態になっているようだ。

BuildTolls_Full.exeを終了して、ごにょごにょするといいみたいだ。

方法

---------- Visual Studio Build Tools ----------
[1918:0CCC][2018-05-30T17:47:07]i371: Updating session, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{a9528995-e130-4501-ae19-bbfaddb779cc}, resume: ARP, restart initiated: No, disable resume: No
[0338:0FB8][2018-05-30T17:47:07]i399: Apply complete, result: 0x0, restart: None, ba requested restart:  No

------------------- Python --------------------
Python 2.7.15 is already installed, not installing again.

画面にこれが出たら、

  1. BuildTolls_Full.exeをタスクマネージャで終了する。
  2. C:\Users\<User Name>\.windows-build-tools\build-tools-log.txtをテキストエディタで開いて、Variable: IsInstalled = 1を追加する。
  3. しばらくすると、npmが終了する。

そのうちバージョンアップで直るでしょうね。




楽天Kobo


このエントリーをはてなブックマークに追加

[Electron] Hello World的なもの(3) パッケージングで作ったプロジェクトをベースにSqlite3を使うプロジェクトを作ってみる。

Sqlite3をインストールする。

npm install sqlite3 -S
npm install @types/sqlite3 -D

electron-rebuildをインストールする。

npm install electron-rebuild -D

electron-rebuildはネイティブコードを含むモジュールをElectronで使えるようにリビルドするツールだ。
インストール後、electron-rebuildを実行してリビルドする。

npx electron-rebuild -f

sqlite3を含めないようにwebpackの設定を変更する。次のようにexternalsを追加する。

  externals: {
    sqlite3: "commonjs sqlite3"
  }

これでとりあえず準備完了。

レンダラープロセスでsqlite3を使う。ここはアップロードしたソースを参照してくれ。

これで、

npm run build

でビルドして、

npm run start

で実行できる。

元のプロジェクトでは、ビルド後、実行するのに必要なファイルをdistフォルダに作られるようにしたが、sqlite3のモジュールがdistフォルダには用意されていないので、パッケージングするには、distフォルダにsqlite3のモジュールをインストールする必要がある。

src/package.jsonのdependenciesのsqlite3を追加する。
ビルド後、distフォルダでnpm installを実行してプロジェクトのフォルダでnpx electron-rebuild -f -m dist/を実行してモジュールをリビルする。

これでelectron-packagerでパッケージングする準備ができたので、electron-packagerでパッケージングする。

変更したソースをダウンロードできるようにしといた。

と、書いたところで、WindowsとLinuxも試しとかんと、と思いためてしてみると・・・
Windowsでうまいこといかん!
Windowsの場合は、管理者として実行したコマンドプロンプトでnpm install --global --production windows-build-toolsを実行し、windows-build-toolsをインストールすればいいらしいんだけど、うちのWindowsでは途中で止まっていつまでたっても(一晩待った)終わらなかった。そのうち調べて解決しないと・・・

あと、Windowsの場合って書いたけど、macOS、Linuxの場合もCコンパイラやPythonなんかが必要なんでインストールする必要がある。Pythonは標準で入ってそうだけど。




楽天Kobo


このエントリーをはてなブックマークに追加

Kobo Development Tutorial: 0 to Hero - MobileRead Forums

ほー、今度試してみよー

このエントリーをはてなブックマークに追加

[Node.js][TypeScript] プライベートなモジュールの共有でモジュールを作ってみたんだけど、これだとソースコードが1つのファイルにしないといけないことになってしまう・・・

普通は、クラスごととかにわけて複数ファイルで構成されているもんだろうから、それをやってみる。

例として、複数ファイルで構成されているモジュールをcommonという名前で作る。

commonディレクトリを作って、そこでnpm initを実行して、package.jsonを適当に作る。
このモジュールは公開しないので念のためprivateフィールドをtrueで追加する。TypeScriptの場合、typesフィールドを追加して、モジュールの型情報ファイルを指定する。

{
  "name": "common",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "types": "index.d.ts",
  "private": true,
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

つぎにTypeScriptの準備。

tsc --initを実行して、tsconfig.jsonを作成する。tsconfig.jsoでdeclarationをtrueにするとtsc実行時に型情報ファイルも生成されるようになるので指定する。

複数のソースファイル、Hoge1.ts、Hoge2.tsを用意する。

Hoge1.ts

export class Hoge1 {
    public name:string = "hoge1";
}

Hoge2.ts

export class Hoge2 {
    public name:string = "hoge2";
}

export class Hoge3 {
    public name:string = "hoge3";
}

package.jsonでmainとtypesに1つのファイルしか指定できないんで、index.tsでHoge1.ts、Hoge2.tsをインポートしてそれをエクスポートするようにする。型情報ファイルは、tsc実行で出力するように設定したのでそれを使う。

index.ts

export { Hoge1 } from "./Hoge1";            // Hoge1のクラスHoge1をエクスポートする。
export * from "./Hoge2";                    // Hoge2でエクスポートしているものを全部エクスポート
export { Hoge1 as Hoge4} from "./Hoge1";    // Hoge1のクラスHoge1をHoge4としてエクスポート

これで、tscを実行して、index.js、index.d.ts 生成する。

これでモジュールのほうは完成。

次は使う方だ。

commonディレクトリと同列(隣)にtestと言うディレクトリを作って、そこを使うことにする。 npm inittsc --initでpackage.json、tsconfig.jsonを作成する。

npm install ../common --save

を実行して、commonモジュールをインストールする。testプロジェクトのnode_modulesフォルダにシンボリックリンクされる。

commonモジュールを使うコードはこんな感じになる。

test.ts

import * as t from "common";

const hoge1 = new t.Hoge1();
const hoge2 = new t.Hoge2();
const hoge3 = new t.Hoge3();
const hoge4 = new t.Hoge4();

console.log(hoge1.name);    // "hoge1"と表示
console.log(hoge2.name);    // "hoge2"と表示
console.log(hoge3.name);    // "hoge3"と表示
console.log(hoge4.name);    // "hoge1"と表示

[Node.js][TypeScript] プライベートなモジュールの共有でpackage.jsonにcommonが絶対パスで保存されるって書いているけど、今のバージョンnpm(v6.1.0))では相対パスになっている。





このエントリーをはてなブックマークに追加

2.9がリリースされたみたいなんで、変更点が書かれているページをリンクしとく。

TypeScript 2.9.1 変更点
このエントリーをはてなブックマークに追加

↑このページのトップヘ