スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

asarのパッケージにはマルチバイト文字を含むファイルを含められない

Electronで作ったアプリケーションをasarでパケージングしようとしてハマったのでメモ。
asarのパッケージにはマルチバイト文字を含むファイルを含められない。
大体次のようなディレクトリ構成になっていた。

KNameCards/
  + BasicScripts.js
  + config.json
  + index.html
  + main.js
  + package.json
  + NameCards.json
  + NameCardsのコピー.json
  + css/

で、これを「asar」でパッケージする。
$ asar pack Pacakge Package.asar

パッケージ自体は作成される。
が、Electronで実行しようとすると「妥当なモジュールではない」と怒られる。
訳がわからないのでパッケージの内容をリスト表示しようとするとエラーになった。
$ asar list Package.asar
{"files":{".DS_Store":{"size":6148,"offset":"0"},"BaseScript.js":{"size":19320,"offset":"6148"},"config.json":{"size":229,"offset":"25468"},"css":{"files":{"default.css":{"size":2955,"offset":"25697"}}},"index.html":{"size":2695,"offset":"28652"},"main.js":{"size":5107,"offset":"31347"},"NameCards のコピー.json":{"size":14596,"offset":"36454"},"NameCards.json":{"size":14830,"offset":"51050"},"package.json":{"size":230,"offset":
^

SyntaxError: Unexpected end of input
at Object.parse (native)
at Object.module.exports.readArchiveHeaderSync (/usr/local/lib/node_modules/asar/lib/disk.js:97:20)
at Object.module.exports.readFilesystemSync (/usr/local/lib/node_modules/asar/lib/disk.js:105:21)
at Object.module.exports.listPackage (/usr/local/lib/node_modules/asar/lib/asar.js:99:17)
at Command. (/usr/local/lib/node_modules/asar/bin/asar:40:23)
at Command.listener (/usr/local/lib/node_modules/asar/node_modules/commander/index.js:249:8)
at emitTwo (events.js:87:13)
at Command.emit (events.js:172:7)
at Command.parseArgs (/usr/local/lib/node_modules/asar/node_modules/commander/index.js:480:12)
at Command.parse (/usr/local/lib/node_modules/asar/node_modules/commander/index.js:372:21)

原因はテストしている時に作っていた「NameCardsのコピー.json」で、これを削除したらきちんと実行可能なパッケージができた。
どうも、パッケージにマルチバイト文字を含むファイル名があるとasarのパッケージのパースに失敗するらしい。
スポンサーサイト

コメント

非公開コメント

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。