By nomadoda
I’m having issues with my monorepo deployment using app platform. I’m using yarn workspaces to manage dependencies. When running a new deploy and using the node_modules cache, the build fails with missing modules.
My monorepo folder structure is basically like this:
apps/
server/
web/
packages/
common/
yarn.lock
I’m using turborepo to manage the build pipeline, so I use the root directory as source_dir. Each app runs as a service in my app, with build command like this yarn build --scope="<app>" --include-dependencies, which builds local dependencies before building the app.
Whenever the cache layer is restored, the following build fails with missing node_modules. I can work around this issue by simply forcing a redeploy without cache, but it is kind of tedious.
I wonder if there is some general caching issue with yarn workspaces? Haven’t been able to find anything in documentation suggesting another configuration. Could work on a reproducible repo if there is no immediate suspicion.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
I share a similar setup and facing the exact same problem.
Here is a snippet from the log.
Detected the following buildpacks suitable to build your app:
[2022-11-17 16:14:03] │
[2022-11-17 16:14:03] │ heroku/nodejs-engine v0.5.1
[2022-11-17 16:14:03] │ digitalocean/node v0.3.4 (Node.js)
[2022-11-17 16:14:03] │ digitalocean/procfile v0.0.3 (Procfile)
[2022-11-17 16:14:03] │ digitalocean/custom v0.1.1 (Custom Build Command)
[2022-11-17 16:14:03] │
[2022-11-17 16:14:03] │ For documentation on the buildpacks used to build your app, please see:
[2022-11-17 16:14:03] │
[2022-11-17 16:14:03] │ Node.js v0.3.4 https://do.co/apps-buildpack-node
[2022-11-17 16:14:03] ╰─────────────────────────────────────────────╼
[2022-11-17 16:14:03]
[2022-11-17 16:14:03] ╭──────────── build caching ───────────╼
[2022-11-17 16:14:03] │ › checking for cache from a previous build
[2022-11-17 16:14:05] │ Restoring metadata for "heroku/nodejs-engine:nodejs" from app image
[2022-11-17 16:14:05] │ Restoring metadata for "heroku/nodejs-engine:yarn" from app image
[2022-11-17 16:14:05] │ Restoring metadata for "heroku/nodejs-engine:toolbox" from cache
[2022-11-17 16:14:05] │ Restoring metadata for "digitalocean/node:node_modules" from cache
[2022-11-17 16:14:06] │ Restoring data for "heroku/nodejs-engine:nodejs" from cache
[2022-11-17 16:14:06] │ Restoring data for "heroku/nodejs-engine:toolbox" from cache
[2022-11-17 16:14:06] │ Restoring data for "heroku/nodejs-engine:yarn" from cache
[2022-11-17 16:14:06] │ Restoring data for "digitalocean/node:node_modules" from cache
[2022-11-17 16:14:16] ╰───────────────────────────────────────╼
[2022-11-17 16:14:16]
[2022-11-17 16:14:16] ╭──────────── app build ───────────╼
[2022-11-17 16:14:16] │ ---> Node.js Buildpack
[2022-11-17 16:14:16] │ ---> Installing toolbox
[2022-11-17 16:14:16] │ ---> Getting Node version
[2022-11-17 16:14:16] │ ---> Resolving Node version
[2022-11-17 16:14:17] │ ---> Reusing Node v16.16.0
[2022-11-17 16:14:17] │ ---> Parsing package.json
[2022-11-17 16:14:18] │ ---> Installing yarn@1.22.19
[2022-11-17 16:14:20] │ ---> No file to start server
[2022-11-17 16:14:20] │ ---> either use 'docker run' to start container or add index.js or server.js
[2022-11-17 16:14:20] │ Project contains yarn.lock, using yarn
[2022-11-17 16:14:20] │ Reusing cached node_modules from yarn.lock
[2022-11-17 16:14:23] │ Running custom build command: yarn build --filter=api
[2022-11-17 16:14:24] │ yarn run v1.22.19
[2022-11-17 16:14:24] │ $ turbo build --filter=api
[2022-11-17 16:14:24] │ • Packages in scope: api
[2022-11-17 16:14:24] │ • Running build in 1 packages
[2022-11-17 16:14:24] │ • Remote caching disabled
[2022-11-17 16:14:24] │ api:build: cache miss, executing ac8bc1e9485e9786
[2022-11-17 16:14:25] │ api:build: $ rimraf dist
[2022-11-17 16:14:25] │ api:build: $ nest build
[2022-11-17 16:14:29] │ api:build: src/activities/activities.controller.ts:11:8 - error TS2307: Cannot find module '@nestjs/common' or its corresponding type declarations.
[2022-11-17 16:14:29] │ api:build:
[2022-11-17 16:14:29] │ api:build: 11 } from '@nestjs/common';
[2022-11-17 16:14:29] │ api:build: ~~~~~~~~~~~~~~~~
[2022-11-17 16:14:29] │ api:build:
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.