I have a frontend and backend folder in a github repo.
I’m new to typescript, in the backend folder, I created the index.ts and compiled it to index.js in the build folder. The build folder is ignored by git, not sure if it’s the issue
When trying to deploy on Render with
Root Directory: backend
Build Command: npm install && npm run build
Start Command: npm start
It kept failing and saying it can’t find index.js
This is my package.json, might be helpful to understand
“name”: “backend”,
“version”: “1.0.0”,
“description”: “”,
“main”: “./build/index.js”,
“scripts”: {
“start”: “node ./build/index.js”,
“build”: “tsc”
Hi sh3242,
Your build command looks like it’s only running
yarn
, which I believe will only install dependencies. I think you’ll need to add a step to that command.
Give that a try and let me know if it helps.
if not, it could help to provide the relevant error, logs, and your
package.json
Regards,
Hi Matt, thanks for your response, I changed
the settings on render to this:
Root Directory: backend
Build Command: npm install && npm run build
Start Command: npm start
And this the the logs I got:
[email protected] build
Apr 15 11:25:36 AM> tsc
Apr 15 11:25:36 AM
Apr 15 11:25:40 AMsrc/index.ts(1,1): error TS2580: Cannot find name ‘require’. Do you need to install type definitions for node? Try
npm i --save-dev @types/node
.
Apr 15 11:25:40 AMsrc/index.ts(3,21): error TS7016: Could not find a declaration file for module ‘express’. ‘/opt/render/project/src/backend/node_modules/express/index.js’ implicitly has an ‘any’ type.
Apr 15 11:25:40 AM Try
npm i --save-dev @types/express
if it exists or add a new declaration (.d.ts) file containing
declare module 'express';
Apr 15 11:25:40 AMsrc/index.ts(4,18): error TS7016: Could not find a declaration file for module ‘cors’. ‘/opt/render/project/src/backend/node_modules/cors/lib/index.js’ implicitly has an ‘any’ type.
Apr 15 11:25:40 AM Try
npm i --save-dev @types/cors
if it exists or add a new declaration (.d.ts) file containing
declare module 'cors';
Apr 15 11:25:40 AMsrc/index.ts(16,16): error TS2580: Cannot find name ‘process’. Do you need to install type definitions for node? Try
npm i --save-dev @types/node
.
Apr 15 11:25:40 AMsrc/index.ts(26,38): error TS7006: Parameter ‘req’ implicitly has an ‘any’ type.
Apr 15 11:25:40 AMsrc/index.ts(26,43): error TS7006: Parameter ‘res’ implicitly has an ‘any’ type.
Apr 15 11:25:40 AMsrc/index.ts(45,43): error TS7006: Parameter ‘req’ implicitly has an ‘any’ type.
Apr 15 11:25:40 AMsrc/index.ts(45,48): error TS7006: Parameter ‘res’ implicitly has an ‘any’ type.
Apr 15 11:25:40 AMsrc/index.ts(61,42): error TS7006: Parameter ‘req’ implicitly has an ‘any’ type.
Apr 15 11:25:40 AMsrc/index.ts(61,46): error TS7006: Parameter ‘res’ implicitly has an ‘any’ type.
Apr 15 11:25:40 AMsrc/index.ts(87,41): error TS7006: Parameter ‘req’ implicitly has an ‘any’ type.
Apr 15 11:25:40 AMsrc/index.ts(87,45): error TS7006: Parameter ‘res’ implicitly has an ‘any’ type.
Apr 15 11:25:40 AMsrc/index.ts(108,44): error TS7006: Parameter ‘req’ implicitly has an ‘any’ type.
Apr 15 11:25:40 AMsrc/index.ts(108,48): error TS7006: Parameter ‘res’ implicitly has an ‘any’ type.
Apr 15 11:25:40 AMsrc/recipe-api.ts(2,16): error TS2580: Cannot find name ‘process’. Do you need to install type definitions for node? Try
npm i --save-dev @types/node
.
Apr 15 11:25:40 AM==> Build failed
And this is my package.json
“name”: “backend”,
“version”: “1.0.0”,
“description”: “”,
“main”: “index.js”,
“scripts”: {
“build”: “tsc”,
“start”: “node build/index.js”
“keywords”:
,
“author”: “”,
“license”: “ISC”,
“dependencies”: {
“@prisma/client”: “^5.9.1”,
“cors”: “^2.8.5”,
“dotenv”: “^16.4.5”,
“express”: “^5.0.0-beta.1”,
“prisma”: “^5.9.1”
“devDependencies”: {
“@types/cors”: “^2.8.17”,
“@types/express”: “^4.17.21”,
“@types/node”: “^20.11.20”,
“nodemon”: “^3.0.3”,
“ts-node”: “^10.9.2”,
“typescript”: “^5.4.5”
Hey Matt, I think I probably solved the issue but not totally, I made 2 changes:
1: I changed the outDir:./build to outDir:build in tsconfig.json
2. I followed a tutorial before this time to set the environment variable like this:
DATABASE_URL: URL from ElephantSQL (change
postgres:
→
postgresql:
)
NODE_ENV: “production”
I didn’t add NODE_ENV this time and I didn’t change postgres to postgresql(just trying it out but I don’t understand why)
I think I understand the first change because I added the wrong path to access build folder I guess.
I don’t quite understand the second change and don’t even know if it’s relevant, do you have experience with it?
Hi sh3242,
I can’t say I’ve ever used Elephant sql. Looks like their docs mention
postgres://...
:
https://www.elephantsql.com/docs/index.html
Perhaps the node library or ORM you’re using requires
postgresql://...
?
Anyway, glad to hear you’re up and running. Thanks for the follow-up!
Regards,