如何将 opencv4nodejs 依赖项部署到 Heroku 的 Node.js 应用程序?

ksy*_*ksy 2 opencv heroku node.js

我正在尝试将 Express Node.Js 应用程序部署到 Heroku,但在构建阶段遇到了 OpenCV 问题。我正在使用opencv4nodejs

\n\n

我在使用 OpenCV 的 Heroku NodeJS 应用程序中遇到了同样的问题,并且在尝试了几种不同类型的 OpenCV Heroku buildpacks 并浏览了该答案的说明之后,我似乎仍然无法让它工作。

\n\n

这是我的package.json

\n\n
{\n  "name": "open-cv-project",\n  "version": "1.0.0",\n  "description": "",\n  "main": "index.js",\n  "scripts": {\n    "test": "echo \\"Error: no test specified\\" && exit 1"\n  },\n  "engines": {\n    "node": "9.5.0",\n    "npm": "4.6.1"\n  },\n  "author": "",\n  "license": "ISC",\n  "dependencies": {\n    "async": "^2.6.1",\n    "aws-sdk": "^2.272.1",\n    "cheerio": "^1.0.0-rc.2",\n    "compromise": "^11.11.0",\n    "express": "^4.16.3",\n    "google-spreadsheet": "^2.0.5",\n    "moment": "^2.22.2",\n    "opencv4nodejs": "^4.6.1",\n    "q": "^1.5.1",\n    "request": "^2.87.0",\n    "request-promise": "^4.2.2",\n    "rss-feed-emitter": "^2.0.0",\n    "sharp": "^0.20.5",\n    "underscore": "^1.9.1",\n    "underscore.string": "^3.3.4",\n    "winston": "^2.3.0"\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

git push以下是尝试Heroku 的日志:

\n\n
My-Macbook:open-cv-project guy$ git push staging\nCounting objects: 37, done.\nDelta compression using up to 8 threads.\nCompressing objects: 100% (36/36), done.\nWriting objects: 100% (37/37), 47.67 MiB | 643.00 KiB/s, done.\nTotal 37 (delta 20), reused 0 (delta 0)\nremote: Compressing source files... done.\nremote: Building source:\nremote: \nremote: -----> opencv app detected\nremote: -----> Fetching and caching OpenCV (a4c8444d7bae2a219b4ea9cb68919637)\nremote: -----> Vendoring OpenCV shared objects into slug\nremote: -----> Node.js app detected\nremote: \nremote: -----> Creating runtime environment\nremote:        \nremote:        NPM_CONFIG_LOGLEVEL=error\nremote:        NODE_VERBOSE=false\nremote:        NODE_ENV=production\nremote:        NODE_MODULES_CACHE=true\nremote: \nremote: -----> Installing binaries\nremote:        engines.node (package.json):  9.5.0\nremote:        engines.npm (package.json):   4.6.1\nremote:        \nremote:        Resolving node version 9.5.0...\nremote:        Downloading and installing node 9.5.0...\nremote:        Bootstrapping npm 4.6.1 (replacing 5.6.0)...\nremote:        npm 4.6.1 installed\nremote: \nremote: -----> Restoring cache\nremote:        Skipping cache restore (new-signature)\nremote: \nremote: -----> Building dependencies\nremote:        Installing node modules (package.json + package-lock)\nremote:        \nremote:        > opencv-build@0.0.14 install /tmp/build_d2fff4256863b9d50ec7ab06c3b8e915/node_modules/opencv-build\nremote:        > node ./install.js\nremote:        \nremote:        info install if you want to use an own OpenCV installation set OPENCV4NODEJS_DISABLE_AUTOBUILD\nremote:        info install library dir does not exist: /tmp/build_d2fff4256863b9d50ec7ab06c3b8e915/node_modules/opencv-build/opencv/build/lib\nremote:        info install running install script...\nremote:        ERR! Error: Command failed: cmake --version\nremote:        /bin/sh: 1: cmake: not found\nremote:        \nremote:        hidden-rides-scraper@1.0.0 /tmp/build_d2fff4256863b9d50ec7ab06c3b8e915\nremote:        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac async@2.6.1\nremote:        \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 lodash@4.17.10\nremote:        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac aws-sdk@2.275.1\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac buffer@4.9.1\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 base64-js@1.3.0\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ieee754@1.1.8  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 isarray@1.0.0\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 events@1.1.1\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ieee754@1.1.8\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 jmespath@0.15.0\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 querystring@0.2.0\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 sax@1.2.1\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac url@0.10.3\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 punycode@1.3.2\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 querystring@0.2.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 uuid@3.1.0\nremote:        \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\xac xml2js@0.4.19\nremote:        \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 sax@1.2.1  deduped\nremote:        \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 xmlbuilder@9.0.7\nremote:        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac cheerio@1.0.0-rc.2\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac css-select@1.2.0\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 boolbase@1.0.0\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 css-what@2.1.0\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac domutils@1.5.1\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dom-serializer@0.1.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 domelementtype@1.3.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\xac nth-check@1.0.1\nremote:        \xe2\x94\x82 \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 boolbase@1.0.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac dom-serializer@0.1.0\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 domelementtype@1.1.3\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 entities@1.1.1  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 entities@1.1.1\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac htmlparser2@3.9.2\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 domelementtype@1.3.0\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac domhandler@2.4.2\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 domelementtype@1.3.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 domutils@1.5.1  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 entities@1.1.1  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 inherits@2.0.3\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\xac readable-stream@2.3.6\nremote:        \xe2\x94\x82 \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 core-util-is@1.0.2\nremote:        \xe2\x94\x82 \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 inherits@2.0.3  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 isarray@1.0.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 process-nextick-args@2.0.0\nremote:        \xe2\x94\x82 \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 safe-buffer@5.1.2  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac string_decoder@1.1.1\nremote:        \xe2\x94\x82 \xe2\x94\x82   \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 safe-buffer@5.1.2  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 util-deprecate@1.0.2  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lodash@4.17.10  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\xac parse5@3.0.3\nremote:        \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 @types/node@10.5.2\nremote:        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac compromise@11.11.0\nremote:        \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 efrt-unpack@2.0.3\nremote:        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac express@4.16.3\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac accepts@1.3.5\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 mime-types@2.1.18  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 negotiator@0.6.1\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 array-flatten@1.1.1\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac body-parser@1.18.2\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bytes@3.0.0\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 content-type@1.0.4  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 debug@2.6.9  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 depd@1.1.2  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac http-errors@1.6.3\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 depd@1.1.2  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 inherits@2.0.3  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setprototypeof@1.1.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 statuses@1.4.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 iconv-lite@0.4.19\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 on-finished@2.3.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 qs@6.5.1  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac raw-body@2.3.2\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bytes@3.0.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac http-errors@1.6.2\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 depd@1.1.1\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 inherits@2.0.3  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setprototypeof@1.0.3\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 statuses@1.4.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 iconv-lite@0.4.19  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 unpipe@1.0.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 type-is@1.6.16  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 content-disposition@0.5.2\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 content-type@1.0.4\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 cookie@0.3.1\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 cookie-signature@1.0.6\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac debug@2.6.9\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 ms@2.0.0\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 depd@1.1.2\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 encodeurl@1.0.2\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 escape-html@1.0.3\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 etag@1.8.1\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac finalhandler@1.1.1\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 debug@2.6.9  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 encodeurl@1.0.2  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 escape-html@1.0.3  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 on-finished@2.3.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 parseurl@1.3.2  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 statuses@1.4.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 unpipe@1.0.0\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 fresh@0.5.2\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 merge-descriptors@1.0.1\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 methods@1.1.2\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac on-finished@2.3.0\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 ee-first@1.1.1\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 parseurl@1.3.2\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 path-to-regexp@0.1.7\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac proxy-addr@2.0.3\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 forwarded@0.1.2\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 ipaddr.js@1.6.0\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 qs@6.5.1\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 range-parser@1.2.0\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 safe-buffer@5.1.1\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac send@0.16.2\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 debug@2.6.9  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 depd@1.1.2  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 destroy@1.0.4\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 encodeurl@1.0.2  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 escape-html@1.0.3  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 etag@1.8.1  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 fresh@0.5.2  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 http-errors@1.6.3  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 mime@1.4.1\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ms@2.0.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 on-finished@2.3.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 range-parser@1.2.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 statuses@1.4.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac serve-static@1.13.2\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 encodeurl@1.0.2  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 escape-html@1.0.3  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 parseurl@1.3.2  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 send@0.16.2  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setprototypeof@1.1.0\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 statuses@1.4.0\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac type-is@1.6.16\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 media-typer@0.3.0\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 mime-types@2.1.18  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 utils-merge@1.0.1\nremote:        \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 vary@1.1.2\nremote:        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac google-spreadsheet@2.0.5\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 async@1.5.2\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac google-auth-library@0.10.0\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac gtoken@1.2.3\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac google-p12-pem@0.1.2\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 node-forge@0.7.5\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 jws@3.1.5  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 mime@1.4.1  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 request@2.87.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac jws@3.1.5\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac jwa@1.1.6\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 buffer-equal-constant-time@1.0.1\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac ecdsa-sig-formatter@1.0.10\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 safe-buffer@5.1.2  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 safe-buffer@5.1.2  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 safe-buffer@5.1.2  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lodash.noop@3.0.1\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 request@2.87.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lodash@3.10.1\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 request@2.87.0  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 xml2js@0.4.19  deduped\nremote:        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 moment@2.22.2\nremote:        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 q@1.5.1\nremote:        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac request@2.87.0\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 aws-sign2@0.7.0\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 aws4@1.7.0\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 caseless@0.12.0\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac combined-stream@1.0.6\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 delayed-stream@1.0.0\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 extend@3.0.1\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 forever-agent@0.6.1\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac form-data@2.3.2\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 asynckit@0.4.0\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 combined-stream@1.0.6  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 mime-types@2.1.18  deduped\nremote:        \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac har-validator@