Build Success on local, but failing on render

Hello
this is my

"scripts": {
    "build": "yarn && npx tsc",
    "prestart": "yarn run build",
    "start": "node src/dist/index.js",
    "preserve": "yarn run build",
    "dev": "concurrently \"npx tsc -w\"  \"nodemon src/dist/index.js\""
  },

I am giving delopy comman as yarn && yarn run prestart but it failing mentioning error

success Already up-to-date.
src/index.ts(18,21): error TS2307: Cannot find module './routes/Airdrop/airdropRoutes.js' or its corresponding type declarations.
error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
==> Build failed 😞

can some help me out please

this is my base folder layout

.
β”œβ”€β”€ README.md
β”œβ”€β”€ node_modules
β”œβ”€β”€ package.json
β”œβ”€β”€ src
β”œβ”€β”€ tsconfig.json
└── yarn.lock

and this is my src folder layout after compilation

.
β”œβ”€β”€ config
β”‚   β”œβ”€β”€ dbConnection.ts
β”‚   └── default.ts
β”œβ”€β”€ controller
β”‚   β”œβ”€β”€ AirDrop
β”‚   β”‚   └── airDropController.ts
β”‚   β”œβ”€β”€ Alpha
β”‚   β”‚   └── Launchpads
β”‚   β”‚       β”œβ”€β”€ dutchAuctionController.ts
β”‚   β”‚       β”œβ”€β”€ fairLaunchInfoController.ts
β”‚   β”‚       β”œβ”€β”€ presaleInfoController.ts
β”‚   β”‚       └── subscriptionInfoController.ts
β”‚   β”œβ”€β”€ Cards
β”‚   β”‚   └── cardController.ts
β”‚   β”œβ”€β”€ Launchpads
β”‚   β”‚   β”œβ”€β”€ dutchAuctionController.ts
β”‚   β”‚   β”œβ”€β”€ fairLaunchInfoController.ts
β”‚   β”‚   β”œβ”€β”€ presaleInfoController.ts
β”‚   β”‚   └── subscriptionInfoController.ts
β”‚   β”œβ”€β”€ PinkLock
β”‚   β”‚   β”œβ”€β”€ pinkLockController.ts
β”‚   β”‚   └── pinkLockWe3Controller.ts
β”‚   └── PrivateSale
β”‚       └── privateSaleController.ts
β”œβ”€β”€ dist
β”‚   β”œβ”€β”€ config
β”‚   β”‚   β”œβ”€β”€ dbConnection.js
β”‚   β”‚   β”œβ”€β”€ dbConnection.js.map
β”‚   β”‚   β”œβ”€β”€ default.js
β”‚   β”‚   └── default.js.map
β”‚   β”œβ”€β”€ controller
β”‚   β”‚   β”œβ”€β”€ AirDrop
β”‚   β”‚   β”‚   β”œβ”€β”€ airDropController.js
β”‚   β”‚   β”‚   └── airDropController.js.map
β”‚   β”‚   β”œβ”€β”€ Alpha
β”‚   β”‚   β”‚   └── Launchpads
β”‚   β”‚   β”‚       β”œβ”€β”€ dutchAuctionController.js
β”‚   β”‚   β”‚       β”œβ”€β”€ dutchAuctionController.js.map
β”‚   β”‚   β”‚       β”œβ”€β”€ fairLaunchInfoController.js
β”‚   β”‚   β”‚       β”œβ”€β”€ fairLaunchInfoController.js.map
β”‚   β”‚   β”‚       β”œβ”€β”€ presaleInfoController.js
β”‚   β”‚   β”‚       β”œβ”€β”€ presaleInfoController.js.map
β”‚   β”‚   β”‚       β”œβ”€β”€ subscriptionInfoController.js
β”‚   β”‚   β”‚       └── subscriptionInfoController.js.map
β”‚   β”‚   β”œβ”€β”€ Cards
β”‚   β”‚   β”‚   β”œβ”€β”€ cardController.js
β”‚   β”‚   β”‚   └── cardController.js.map
β”‚   β”‚   β”œβ”€β”€ Launchpads
β”‚   β”‚   β”‚   β”œβ”€β”€ dutchAuctionController.js
β”‚   β”‚   β”‚   β”œβ”€β”€ dutchAuctionController.js.map
β”‚   β”‚   β”‚   β”œβ”€β”€ fairLaunchInfoController.js
β”‚   β”‚   β”‚   β”œβ”€β”€ fairLaunchInfoController.js.map
β”‚   β”‚   β”‚   β”œβ”€β”€ presaleInfoController.js
β”‚   β”‚   β”‚   β”œβ”€β”€ presaleInfoController.js.map
β”‚   β”‚   β”‚   β”œβ”€β”€ subscriptionInfoController.js
β”‚   β”‚   β”‚   └── subscriptionInfoController.js.map
β”‚   β”‚   β”œβ”€β”€ PinkLock
β”‚   β”‚   β”‚   β”œβ”€β”€ pinkLockController.js
β”‚   β”‚   β”‚   β”œβ”€β”€ pinkLockController.js.map
β”‚   β”‚   β”‚   β”œβ”€β”€ pinkLockWe3Controller.js
β”‚   β”‚   β”‚   └── pinkLockWe3Controller.js.map
β”‚   β”‚   └── PrivateSale
β”‚   β”‚       β”œβ”€β”€ privateSaleController.js
β”‚   β”‚       └── privateSaleController.js.map
β”‚   β”œβ”€β”€ index.js
β”‚   β”œβ”€β”€ index.js.map
β”‚   β”œβ”€β”€ middleware
β”‚   β”‚   β”œβ”€β”€ catchAsyncError.js
β”‚   β”‚   └── catchAsyncError.js.map
β”‚   β”œβ”€β”€ model
β”‚   β”‚   β”œβ”€β”€ AirDrop
β”‚   β”‚   β”‚   β”œβ”€β”€ airDropModel.js
β”‚   β”‚   β”‚   └── airDropModel.js.map
β”‚   β”‚   β”œβ”€β”€ Alpha
β”‚   β”‚   β”‚   └── LaunchpadsInfo
β”‚   β”‚   β”‚       β”œβ”€β”€ dutchAuctionModel.js
β”‚   β”‚   β”‚       β”œβ”€β”€ dutchAuctionModel.js.map
β”‚   β”‚   β”‚       β”œβ”€β”€ fairlaunchInfoModel.js
β”‚   β”‚   β”‚       β”œβ”€β”€ fairlaunchInfoModel.js.map
β”‚   β”‚   β”‚       β”œβ”€β”€ presaleInfoModel.js
β”‚   β”‚   β”‚       β”œβ”€β”€ presaleInfoModel.js.map
β”‚   β”‚   β”‚       β”œβ”€β”€ subscriptionModel.js
β”‚   β”‚   β”‚       └── subscriptionModel.js.map
β”‚   β”‚   β”œβ”€β”€ Cards
β”‚   β”‚   β”‚   β”œβ”€β”€ cardModel.js
β”‚   β”‚   β”‚   └── cardModel.js.map
β”‚   β”‚   β”œβ”€β”€ LaunchpadsInfo
β”‚   β”‚   β”‚   β”œβ”€β”€ dutchAuctionModel.js
β”‚   β”‚   β”‚   β”œβ”€β”€ dutchAuctionModel.js.map
β”‚   β”‚   β”‚   β”œβ”€β”€ fairlaunchInfoModel.js
β”‚   β”‚   β”‚   β”œβ”€β”€ fairlaunchInfoModel.js.map
β”‚   β”‚   β”‚   β”œβ”€β”€ presaleInfoModel.js
β”‚   β”‚   β”‚   β”œβ”€β”€ presaleInfoModel.js.map
β”‚   β”‚   β”‚   β”œβ”€β”€ subscriptionModel.js
β”‚   β”‚   β”‚   └── subscriptionModel.js.map
β”‚   β”‚   β”œβ”€β”€ PinkLock
β”‚   β”‚   β”‚   β”œβ”€β”€ pinklockModel.js
β”‚   β”‚   β”‚   β”œβ”€β”€ pinklockModel.js.map
β”‚   β”‚   β”‚   β”œβ”€β”€ pinklockWeb3Model.js
β”‚   β”‚   β”‚   └── pinklockWeb3Model.js.map
β”‚   β”‚   └── Privatesale
β”‚   β”‚       β”œβ”€β”€ privateSaleModel.js
β”‚   β”‚       └── privateSaleModel.js.map
β”‚   β”œβ”€β”€ routes
β”‚   β”‚   β”œβ”€β”€ Airdrop
β”‚   β”‚   β”‚   β”œβ”€β”€ airdropRoutes.js
β”‚   β”‚   β”‚   └── airdropRoutes.js.map
β”‚   β”‚   β”œβ”€β”€ Alpha
β”‚   β”‚   β”‚   └── Launchpad
β”‚   β”‚   β”‚       β”œβ”€β”€ dutchAuctionInfoRoutes.js
β”‚   β”‚   β”‚       β”œβ”€β”€ dutchAuctionInfoRoutes.js.map
β”‚   β”‚   β”‚       β”œβ”€β”€ fairlaunchInfoRoutes.js
β”‚   β”‚   β”‚       β”œβ”€β”€ fairlaunchInfoRoutes.js.map
β”‚   β”‚   β”‚       β”œβ”€β”€ presaleInfoRoutes.js
β”‚   β”‚   β”‚       β”œβ”€β”€ presaleInfoRoutes.js.map
β”‚   β”‚   β”‚       β”œβ”€β”€ subscriptionInfoRoutes.js
β”‚   β”‚   β”‚       └── subscriptionInfoRoutes.js.map
β”‚   β”‚   β”œβ”€β”€ Cards
β”‚   β”‚   β”‚   β”œβ”€β”€ cardRoutes.js
β”‚   β”‚   β”‚   └── cardRoutes.js.map
β”‚   β”‚   β”œβ”€β”€ Launchpad
β”‚   β”‚   β”‚   β”œβ”€β”€ dutchAuctionInfoRoutes.js
β”‚   β”‚   β”‚   β”œβ”€β”€ dutchAuctionInfoRoutes.js.map
β”‚   β”‚   β”‚   β”œβ”€β”€ fairlaunchInfoRoutes.js
β”‚   β”‚   β”‚   β”œβ”€β”€ fairlaunchInfoRoutes.js.map
β”‚   β”‚   β”‚   β”œβ”€β”€ presaleInfoRoutes.js
β”‚   β”‚   β”‚   β”œβ”€β”€ presaleInfoRoutes.js.map
β”‚   β”‚   β”‚   β”œβ”€β”€ subscriptionInfoRoutes.js
β”‚   β”‚   β”‚   └── subscriptionInfoRoutes.js.map
β”‚   β”‚   β”œβ”€β”€ PinkLock
β”‚   β”‚   β”‚   β”œβ”€β”€ pinkLockRoutes.js
β”‚   β”‚   β”‚   β”œβ”€β”€ pinkLockRoutes.js.map
β”‚   β”‚   β”‚   β”œβ”€β”€ pinkLockWeb3Routes.js
β”‚   β”‚   β”‚   └── pinkLockWeb3Routes.js.map
β”‚   β”‚   └── PrivateSale
β”‚   β”‚       β”œβ”€β”€ privateSaleRoutes.js
β”‚   β”‚       └── privateSaleRoutes.js.map
β”‚   β”œβ”€β”€ types
β”‚   β”‚   β”œβ”€β”€ AirDrop
β”‚   β”‚   β”‚   β”œβ”€β”€ AirDropData.js
β”‚   β”‚   β”‚   └── AirDropData.js.map
β”‚   β”‚   β”œβ”€β”€ Alpha
β”‚   β”‚   β”‚   └── Launchpads
β”‚   β”‚   β”‚       β”œβ”€β”€ presaleData.js
β”‚   β”‚   β”‚       └── presaleData.js.map
β”‚   β”‚   β”œβ”€β”€ Cards
β”‚   β”‚   β”‚   β”œβ”€β”€ card.js
β”‚   β”‚   β”‚   └── card.js.map
β”‚   β”‚   β”œβ”€β”€ Launchpads
β”‚   β”‚   β”‚   β”œβ”€β”€ presaleData.js
β”‚   β”‚   β”‚   └── presaleData.js.map
β”‚   β”‚   β”œβ”€β”€ PinkLock
β”‚   β”‚   β”‚   β”œβ”€β”€ pinkLockData.js
β”‚   β”‚   β”‚   β”œβ”€β”€ pinkLockData.js.map
β”‚   β”‚   β”‚   β”œβ”€β”€ pinkLockDataWeb3.js
β”‚   β”‚   β”‚   └── pinkLockDataWeb3.js.map
β”‚   β”‚   └── PrivateSale
β”‚   β”‚       β”œβ”€β”€ privateSaleData.js
β”‚   β”‚       └── privateSaleData.js.map
β”‚   └── utils
β”‚       β”œβ”€β”€ errorHandler.js
β”‚       └── errorHandler.js.map
β”œβ”€β”€ index.ts
β”œβ”€β”€ middleware
β”‚   β”œβ”€β”€ catchAsyncError.ts
β”‚   └── error.ts
β”œβ”€β”€ model
β”‚   β”œβ”€β”€ AirDrop
β”‚   β”‚   └── airDropModel.ts
β”‚   β”œβ”€β”€ Alpha
β”‚   β”‚   └── LaunchpadsInfo
β”‚   β”‚       β”œβ”€β”€ dutchAuctionModel.ts
β”‚   β”‚       β”œβ”€β”€ fairlaunchInfoModel.ts
β”‚   β”‚       β”œβ”€β”€ presaleInfoModel.ts
β”‚   β”‚       └── subscriptionModel.ts
β”‚   β”œβ”€β”€ Cards
β”‚   β”‚   └── cardModel.ts
β”‚   β”œβ”€β”€ LaunchpadsInfo
β”‚   β”‚   β”œβ”€β”€ dutchAuctionModel.ts
β”‚   β”‚   β”œβ”€β”€ fairlaunchInfoModel.ts
β”‚   β”‚   β”œβ”€β”€ presaleInfoModel.ts
β”‚   β”‚   └── subscriptionModel.ts
β”‚   β”œβ”€β”€ PinkLock
β”‚   β”‚   β”œβ”€β”€ pinklockModel.ts
β”‚   β”‚   └── pinklockWeb3Model.ts
β”‚   └── Privatesale
β”‚       └── privateSaleModel.ts
β”œβ”€β”€ routes
β”‚   β”œβ”€β”€ AirDrop
β”‚   β”‚   └── airdropRoutes.ts
β”‚   β”œβ”€β”€ Alpha
β”‚   β”‚   └── Launchpad
β”‚   β”‚       β”œβ”€β”€ dutchAuctionInfoRoutes.ts
β”‚   β”‚       β”œβ”€β”€ fairlaunchInfoRoutes.ts
β”‚   β”‚       β”œβ”€β”€ presaleInfoRoutes.ts
β”‚   β”‚       └── subscriptionInfoRoutes.ts
β”‚   β”œβ”€β”€ Cards
β”‚   β”‚   └── cardRoutes.ts
β”‚   β”œβ”€β”€ Launchpad
β”‚   β”‚   β”œβ”€β”€ dutchAuctionInfoRoutes.ts
β”‚   β”‚   β”œβ”€β”€ fairlaunchInfoRoutes.ts
β”‚   β”‚   β”œβ”€β”€ presaleInfoRoutes.ts
β”‚   β”‚   └── subscriptionInfoRoutes.ts
β”‚   β”œβ”€β”€ PinkLock
β”‚   β”‚   β”œβ”€β”€ pinkLockRoutes.ts
β”‚   β”‚   └── pinkLockWeb3Routes.ts
β”‚   └── PrivateSale
β”‚       └── privateSaleRoutes.ts
β”œβ”€β”€ types
β”‚   β”œβ”€β”€ AirDrop
β”‚   β”‚   └── AirDropData.ts
β”‚   β”œβ”€β”€ Alpha
β”‚   β”‚   └── Launchpads
β”‚   β”‚       └── presaleData.ts
β”‚   β”œβ”€β”€ Cards
β”‚   β”‚   └── card.ts
β”‚   β”œβ”€β”€ Launchpads
β”‚   β”‚   └── presaleData.ts
β”‚   β”œβ”€β”€ PinkLock
β”‚   β”‚   β”œβ”€β”€ pinkLockData.ts
β”‚   β”‚   └── pinkLockDataWeb3.ts
β”‚   └── PrivateSale
β”‚       └── privateSaleData.ts
└── utils
    └── errorHandler.ts

Hi,

There will always be differences between environments: development mode/Local, production mode/Render, etc. These differences need to be considered and configured as required for your own app in each environment.

Maybe it’s a file-casing issue? Render runs on Linux with a case-sensitive filesystem, your code is looking for routes/Airdrop/airdropRoutes.js, so the file path/name casing would need to be exactly the same as you see in your repo.

Alan

Thanks there were some file naming issues, there weren’t picked in local.
Thanks for pointing in right direction