Node.jsでExcel読み込みをする実装を終え、サーバーで起動させてみたところエラーが発生。
ローカルでは元気に動いてたじゃない。
環境
Node v6.2.2
npm 3.10.6
exceljs 0.2.8
現象
Node.jsの実装抜粋
var excel = require('exceljs');
var workbook = new excel.Workbook();
workbook.xlsx.readFile(targetExcelPath).then(function () {
workbook.eachSheet(function (sheet, sheetId) {
// 実装
});
});
発生したエラー抜粋
' + JSON.stringify(node));
^
Error: Unexpected xml node in parseOpen: {"name":"cp:lastPrinted","attributes":{},"isSelfClosing":false}```
Unexpected xml?
もう一度、ローカルで資源を最新化して動作確認すると同じエラーが再現。
いやいやいや、さっきまで元気に動いてたじゃない。
Excelの読み込み部分は修正していないし、読み込んでいるファイルも変えていない。
# 原因
exceljsに何かが起こったとしか考えられないのでpackage.jsonを確認。
``` "dependencies": {
"exceljs": "^0.2.8"
},```
インストールされているexceljsのVersionを確認すると
`exceljs@0.2.10`
リビジョン2つも上がっとる。。。(2016/07/14時点)
# 対応
package.jsonを修正し、ライブラリのVersionを0.2.8固定で指定する。
``` "dependencies": {
"exceljs": "0.2.8"
},```
`npm install exceljs`
でexceljsをインストールし直すと元気を取り戻してくれた。
`npm install exceljs --save`
でpackage.jsonに追加された事で満足して
`^`がマイナーバージョンの更新を自動で取り込む、という意味を理解していなかったのが悪いのだが
リビジョンが変わるだけでこんな根本的な部分が動かなくなるのは想定外過ぎた。