Es tut mir leid für meine sehr Neuling Frage, aber ich habe einen schrecklichen Tag herauszufinden, diesen Fehler, ich habe eine Express-App und ich versuche, es auszuführen in Docker komponieren. Ich habe diese Dockerfile verwendet:Kann nicht finden, Modul für einen Knoten js App läuft in einem Docker komponieren Umgebung
FROM mhart/alpine-node
RUN mkdir -p /usr/src/app
RUN chmod -R 777 /usr/src/app
WORKDIR /usr/src/app
RUN npm install node-gyp -g
RUN npm install nodemon -g
ENV NODE_ENV development
EXPOSE 3000
Und diesen Teil meiner Docker-Compose-Datei:
backend:
mem_limit: 100m
build:
context: .
dockerfile: dockerfiles/node/Dockerfile
command: npm start
depends_on:
- mongo
- elasticsearch
volumes:
- ./backend/:/usr/src/app
ports:
- 3000:3000
links:
- "mongo:mongo"
- "elasticsearch:elasticsearch"
Wenn ich Docker-komponieren up zu tun, bekomme ich diesen Fehler:
backend_1 | npm info it worked if it ends with ok
backend_1 | npm info using [email protected]
backend_1 | npm info using [email protected]
backend_1 | npm info lifecycle [email protected]~prestart: [email protected]
backend_1 | npm info lifecycle [email protected]~start: [email protected]
backend_1 |
backend_1 | > [email protected] start /usr/src/app
backend_1 | > nodemon index.js
backend_1 |
backend_1 | [nodemon] 1.11.0
backend_1 | [nodemon] to restart at any time, enter `rs`
backend_1 | [nodemon] watching: *.*
backend_1 | [nodemon] starting `node index.js`
backend_1 | module.js:471
backend_1 | throw err;
backend_1 | ^
backend_1 |
backend_1 | Error: Cannot find module 'dotenv'
backend_1 | at Function.Module._resolveFilename (module.js:469:15)
backend_1 | at Function.Module._load (module.js:417:25)
backend_1 | at Module.require (module.js:497:17)
backend_1 | at require (internal/module.js:20:19)
backend_1 | at Object.<anonymous> (/usr/src/app/index.js:1:63)
backend_1 | at Module._compile (module.js:570:32)
backend_1 | at Object.Module._extensions..js (module.js:579:10)
backend_1 | at Module.load (module.js:487:32)
backend_1 | at tryModuleLoad (module.js:446:12)
backend_1 | at Function.Module._load (module.js:438:3)
backend_1 | [nodemon] app crashed - waiting for file changes before starting...
Wenn ich ls -al
in der Backend Container mache, bekomme ich eine vollständige Liste meiner b ackend app Ordner Inhalt, aber es klingt wie knoten_module Abhängigkeiten werden nicht erkannt.
Ich habe den gleichen Leitfaden gefolgt, aber ich habe immer noch das gleiche Problem – jemlifathi
Ihre Dockerfile fehlt alle 'package.json' Zeug, oder Sie haben nicht die vollen Sachen eingefügt. In Ihrer Frage gibt es überhaupt keine 'npm-Installation', deshalb gibt es nichts in' node_modules'. Überprüfen Sie Ihre Pfade innerhalb des Containers, d. H. Dass sich Ihr Knotencode im selben Ordner wie Ihre Knotenmodule befindet. Ihr Code wird mit der 'volume' in Docker-compose gemountet, aber die Abhängigkeiten werden von Ihrer' Dockerfile' kommen. – CharlieBrown
Eigentlich enthält mein WORKDIR alle meine Projektdateien, aber beim Starten der App kann es keine Abhängigkeiten vom Ordner node_modules abrufen !!! – jemlifathi