I was interested in dealing with PDF files in JavaScript. I found Mirusan on github.
NOTE: I couldn’t get it work on my mac. It is just a note.
Work log
It has some python code and it requires python3
.
However, I didn’t have python3
on my system.
Get python3 on a Mac.
brew install python3
By using pip3
command, install packages against python3.
pip3 install -r requirements.txt
requirements.txt
looks like this:
falcon==1.1.0
python-dateutil==2.6.0
Whoosh==2.7.4
langdetect==1.0.7
PyInstaller==3.2.1
It is a definition file for pip
command and is a simple, line-based format.
falcon
: An unladen web framework for building APIs and app backends
python-dateutil
: Extensions to the standard Python datetime module
Whoosh
: Fast, pure-Python full text indexing, search, and spell checking library
langdetect 1.0.7
: Language detection library ported from Google’s language-detection
PyInstaller
: PyInstaller bundles a Python application and all its dependencies into a single package
pip3 install -r requirements.txt
This installed these packages.
side track
When I ran pip3 install
command, it said the version is outdated.
You are using pip version 8.1.2, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
pip3 install --upgrade pip
back
cd ../electron
npm install
side track(2) - can I open two places in VSCode?
You can do this with Multi-root Workspaces feature!
back
npm run compile
This runs a command defined in "script"
’s compile
.
{
...
"scripts": {
...
"compile:elm": "elm-make ./src/Main.elm --output elm.js",
"compile:babel": "babel pdf2txt.js > ./lib/pdf2txt.js",
"compile": "npm-run-all -p compile:*",
...
},
"devDependencies": {
...
"npm-run-all": "^4.0.1",
...
}
}
npm-run-all
runs a series of npm run
commands. In this example, it runs npm run compile:elm
and npm run compile:babel
.
What is Elm?
Elm is a functional language that compiles to JavaScript.
The web site says:
It competes with projects like React as a tool for creating websites and web apps.
Elm has a very strong emphasis on simplicity, ease-of-use, and quality tooling.
The main code is written in Elm and is located at murisan/electron/src/
.
elm-make ./src/Main.elm --output elm.js
compiles elm code into JavaScript code and generates elm.js
file.
What is babel?
Babel is a tool to convert JavaScript code written in newer standard like ES5 into the old JavaScript so that it can run browsers.
babel pdf2txt.js > ./lib/pdf2txt.js"
So, the converted version is written in murisan/electron/lib/pdf2txt.js
.
back
npm start
and I saw the following error:
A JavaScript error occurred in the main process
Uncaught Exception:
Error: spawn ./mirusan_search ENOENT
at exports._errnoException (util.js:1050:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
at onErrorNT (internal/child_process.js:367:16)
...
It looks like mirusan_search
executable is missing.
I’ve searched on github and:
// Laucn python subprocess
if (Config.mode == 'release') {
if (process.platform == 'win32') { var subpyName = 'mirusan_search.exe'; }
else { var subpyName = 'mirusan_search'; }
var subpy = require('child_process').spawn('./' + subpyName, ['--server']);
} else if (Config.mode == 'debug') {
var subpy = require('child_process').spawn('python3', ['../search/search.py', '--server']);
}
mirusan_search
needs to be at mirusan/electron
directory, but I don’t see it.
I’ve updated the config file (config.json
) to have
"mode": "debug"
npm start
It starts, but it shows DevTool.

It showed some error message on the console too:
$ npm start
> Mirusan@0.1.0 start /Users/gaku/tz/mirusan/electron
> electron main.js
[15:14:14:0003] [info] Checking for update
[15:14:14:0302] [error] Error: Error: ENOENT, dev-app-update.yml not found in /Users/gaku/tz/mirusan/electron/node_modules/electron/dist/Electron.app/Contents/Resources/default_app.asar
at notFoundError (ELECTRON_ASAR.js:115:19)
at fs.readFile (ELECTRON_ASAR.js:478:16)
at go$readFile (/Users/gaku/tz/mirusan/electron/node_modules/graceful-fs/graceful-fs.js:73:14)
at readFile (/Users/gaku/tz/mirusan/electron/node_modules/graceful-fs/graceful-fs.js:70:12)
at readFile (/Users/gaku/tz/mirusan/electron/node_modules/universalify/index.js:5:67)
at /Users/gaku/tz/mirusan/electron/node_modules/electron-updater/src/AppUpdater.ts:361:27
When I tried to load a pdf file, it also showed the following error.

There are too many issues and I decided not to continue at this point.