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 "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}\nRun Code Online (Sandbox Code Playgroud)\n\ngit push以下是尝试Heroku 的日志:
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@
经过一番坚持,终于找到了解决方案,所以回答我自己的问题:
如果您的堆栈是heroku-16,则这些是您要添加的 Heroku 构建包(按此特定顺序!):
| 归档时间: |
|
| 查看次数: |
1727 次 |
| 最近记录: |