In my app https://glitch.com/~emoji-gender-reveal, my cron job that hits it has been timing out because waking up the app takes so long. Looking at the logs, the project reinstalls all the dependencies, which adds a huge amount of overhead to the wake up process.
Why is this happening? If the package-lock.json
file hasn’t changed since the last run, why does everything have to be reinstalled? Is it something in my project that is misconfigured?
Here are the logs from waking it up a few minutes ago:
Startup logs
node v12.0.0, with pnpm
Installing...
Performing headless installation
Resolving: total 1, reused 0, downloaded 0
Resolving: total 1, reused 0, downloaded 0
Resolving: total 91, reused 90, downloaded 0
Resolving: total 208, reused 207, downloaded 0
Resolving: total 324, reused 323, downloaded 0
Resolving: total 426, reused 425, downloaded 0
Resolving: total 586, reused 585, downloaded 0
Packages: +691
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Resolving: total 691, reused 691, downloaded 0
Resolving: total 691, reused 691, downloaded 0
Resolving: total 691, reused 691, downloaded 0
Resolving: total 691, reused 691, downloaded 0
Resolving: total 691, reused 691, downloaded 0
Resolving: total 691, reused 691, downloaded 0
Resolving: total 691, reused 691, downloaded 0
Resolving: total 691, reused 691, downloaded 0
Resolving: total 691, reused 691, downloaded 0
Resolving: total 691, reused 691, downloaded 0
Resolving: total 691, reused 691, downloaded 0, done
.../fsevents/1.2.9/node_modules/fsevents install$ node install
.../2.0.0/node_modules/puppeteer install$ node install.js
.../fsevents/1.2.9/node_modules/fsevents install: Done
.../2.0.0/node_modules/puppeteer install: Chromium downloaded to /rbd/pnpm-volume/4590afb2-5992-4b96-886e-0d8110c0224b/node_modules/.registry.npmjs.org/puppeteer/2.0.0/node_modules/puppeteer/.local-chromium/linux-706915
.../2.0.0/node_modules/puppeteer install: Done
dependencies:
+ compression 1.7.4
+ dotenv 8.2.0
+ express 4.17.1
+ is-docker 2.0.0
+ puppeteer 2.0.0
+ twemoji 12.1.4
+ twitter 1.7.1
devDependencies:
+ clean-webpack-plugin 3.0.0
+ css-loader 3.2.0
+ eslint 6.6.0
+ eslint-config-standard 14.1.0
+ eslint-plugin-import 2.18.2
+ eslint-plugin-node 10.0.0
+ eslint-plugin-promise 4.2.1
+ eslint-plugin-standard 4.0.1
+ hard-source-webpack-plugin 0.13.1
+ html-loader 0.5.5
+ html-webpack-plugin 3.2.0
+ style-loader 1.0.0
+ webpack 4.41.2
+ webpack-cli 3.3.10
+ webpack-subresource-integrity 1.3.4
Total install time: 59915ms
> emoji-gender-reveal@1.2.1 build /app
> webpack --mode production
[hardsource:e278d730] Writing new cache e278d730...
[hardsource:e278d730] Tracking node dependencies with: package-lock.json.
Hash: a6edf4689fa27c4ae2bb
Version: webpack 4.41.2
Time: 6783ms
Built at: 12/13/2019 11:32:02 PM
Asset Size Chunks Chunk Names
client.html 1.27 KiB [emitted]
client.js 250 KiB 0 [emitted] [big] client
client.js.map 60.3 KiB 0 [emitted] [dev] client
puppeteer.html 488 bytes [emitted]
puppeteer.js 247 KiB 1 [emitted] [big] puppeteer
puppeteer.js.map 43.6 KiB 1 [emitted] [dev] puppeteer
Entrypoint client [big] = client.js client.js.map
Entrypoint puppeteer [big] = puppeteer.js puppeteer.js.map
[0] ./src/emojiFuncs.js 3.56 KiB {0} {1} [built]
[2] ./src/drawFuncs.js + 1 modules 8.73 KiB {0} {1} [built]
| ./src/drawFuncs.js 7.84 KiB [built]
| ./src/utils.js 899 bytes [built]
[3] ./src/emoji.json 351 KiB {0} {1} [built]
[4] ./src/client.js 1 KiB {0} [built]
[5] ./src/client.css 618 bytes {0} [built]
[6] /rbd/pnpm-volume/4590afb2-5992-4b96-886e-0d8110c0224b/node_modules/.registry.npmjs.org/css-loader/3.2.0/node_modules/css-loader/dist/cjs.js!./src/client.css 608 bytes {0} [built]
[9] ./src/puppeteer.js 1.26 KiB {1} [built]
+ 3 hidden modules
WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets:
client.js (250 KiB)
puppeteer.js (247 KiB)
WARNING in entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
Entrypoints:
client (250 KiB)
client.js
puppeteer (247 KiB)
puppeteer.js
WARNING in webpack performance recommendations:
You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application.
For more info visit https://webpack.js.org/guides/code-splitting/
Child html-webpack-plugin for "client.html":
1 asset
Entrypoint undefined = client.html
[0] /rbd/pnpm-volume/4590afb2-5992-4b96-886e-0d8110c0224b/node_modules/.registry.npmjs.org/html-webpack-plugin/3.2.0/node_modules/html-webpack-plugin/lib/loader.js!./src/client.html 1.37 KiB {0} [built]
[2] (webpack)/buildin/global.js 472 bytes {0} [built]
[3] (webpack)/buildin/module.js 497 bytes {0} [built]
+ 1 hidden module
Child html-webpack-plugin for "puppeteer.html":
1 asset
Entrypoint undefined = puppeteer.html
[0] /rbd/pnpm-volume/4590afb2-5992-4b96-886e-0d8110c0224b/node_modules/.registry.npmjs.org/html-webpack-plugin/3.2.0/node_modules/html-webpack-plugin/lib/loader.js!./src/puppeteer.html 578 bytes {0} [built]
[2] (webpack)/buildin/global.js 472 bytes {0} [built]
[3] (webpack)/buildin/module.js 497 bytes {0} [built]
+ 1 hidden module
> emoji-gender-reveal@1.2.1 serve /app
> node ./server.js
🔨🏖 Your app is listening on port 3000