node.js - AWS Elastic Beanstalk Docker Node Typescript Το σημείο εισόδου δεν βρέθηκε
Έχω ένα παράδειγμα EBS με Πλατφόρμα Docker που τρέχει σε 64bit Amazon Linux/2.16.5
Έχω μια εφαρμογή Node.js TypeScript που όταν ανέβει χρειάζεται να μεταγλωττιστεί και μετά να εκτελεστεί.
Λαμβάνω αυτό το σφάλμα στο /var/log/eb-docker/containers/eb-current-app/unexpected-quit.log μετά τη λήψη των πλήρων αρχείων καταγραφής.
Docker container quit unexpectedly on Thu Mar 11 02:12:43 UTC 2021:
> [email start /usr/src/app
> node ./dist/server.js
internal/modules/cjs/loader.js:883
throw err;
^
Error: Cannot find module '/usr/src/app/dist/server.js'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)
at Function.Module._load (internal/modules/cjs/loader.js:725:27)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email start: `node ./dist/server.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2021-03-11T02_12_39_040Z-debug.log
Αρχείο Docker
FROM node:14-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY tsconfig*.json ./
COPY src src
RUN npm run build
ENV NODE_ENV=ebs
ENV PORT=8080
ENV HOST=0.0.0.0
EXPOSE 8080
ENTRYPOINT ["npm", "start"]
σενάρια package.json
"scripts": {
"start": "node ./dist/server.js",
"build": "tsc",
"dev": "nodemon",
"test": "jest --watch"
},
tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"outDir": "dist",
"sourceMap": true,
"strict": true,
"target": "es2017",
"allowSyntheticDefaultImports": true,
"noImplicitAny": false
},
"compileOnSave": true,
"include": [
"src/",
]
}
Αυτό λειτουργεί καλά τοπικά στον υπολογιστή μου με Ubuntu χρησιμοποιώντας Docker. Αποτυγχάνει μόνο στην περίπτωση EBS.