Error: Cannot find module '../controllers/thermostatLogic'

Ini file docker saya

FROM node:10-alpine
LABEL version="1.02"
RUN mkdir -p /app/node_modules && chown -R node:node /app
USER node
WORKDIR /app
COPY . /app
RUN npm install
RUN npm audit fix
RUN ls
RUN cd ./controllers && ls
RUN mkdir uploads &&\
cd uploads &&\
touch uploadedFile.csv
RUN cd ..
RUN ls
CMD npm start
EXPOSE 1000

Saya menjalankan perintah docker build -t hvacdoctor . dan kemudian. Ketika menjalankan perintah ls ia mengembalikan:

 ---> Running in a6d2b49092ef
INSIDE
app.js
bin
controllers
env.js
exampleDevices.json
node_modules
package-lock.json
package.json
public
readme.md
routes
schema
test
views
yarn.lock
Removing intermediate container a6d2b49092ef

Docker menjalankan hvacdoctordoke: terbaru


Error: Cannot find module '../controllers/t***Logic'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/home/node/app/controllers/fileLogic.js:8:19)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/home/node/app/routes/index.js:4:19)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)

Ini semua berfungsi dengan npm install & npm start tanpa kesalahan KELUAR dari buruh pelabuhan tetapi mengapa ini menjadi masalah di dalamnya?

Saya sudah mencoba beberapa metode berbeda (git clone keluar karena saya perlu SSO untuk itu dll)

These are the install instructions
1) download bash / node
2) create a folder called uploads and a file called uploadedFile.csv -make sure the file is in the folder.
3) npm install 
4) npm start

Sunting - ini adalah tangkapan layar dari struktur folder saat ini.

folder structure

Pikiran?

Sunting - disarankan agar saya menjalankan program dengan docker-compose.yml berikut:

node-app:
  container_name: node-app
  image: node:latest
  restart: always
  volumes:
   - ./:/home/node/app
  working_dir: /home/node/app
  ports:
   - 4000:4000
  networks:
   - main-network
  command: "tail -f /dev/null && npm start"


Changed package.json

"main": "index.js",
"scripts": {
  "preinstall": "npm i nodemon -g",
  "start": "nodemon index.js",
}

^^ DENGAN skrip awal yang disarankan ini, nodemon memulai index.js secara rekursif - jika saya menghapus nodemon dari perintah, ia tidak dapat menemukan index.js. - Saya kemungkinan akan mengedit ini seperti yang ada di folder rute untuk memulai sebagai route/index.js

JUGA untuk menambah kejelasan - sebelumnya saya tidak bekerja dengan nodemon - Saya menjalankan NPM start untuk memulai proyek saya jika itu membuat perbedaan (yaitu saya dapat git clone dan menjalankan npm install && npm start dan itu akan berhasil.

1
Jason Harder 27 Oktober 2019, 21:31

2 jawaban

Jawaban Terbaik

Coba konfigurasi buruh pelabuhan di bawah ini untuk aplikasi simpul. Ini akan bekerja untuk Anda.

 node-app:
  container_name: node-app
  image: node:latest
  restart: always
  volumes:
   - ./:/home/node/app
  working_dir: /home/node/app
  ports:
   - 4000:4000
  networks:
   - main-network
  command: "tail -f /dev/null && npm start"

Di bawah ini adalah package.json

"main": "index.js",
"scripts": {
  "preinstall": "npm i nodemon -g",
  "start": "nodemon index.js",
}
1
zshan4444 28 Oktober 2019, 05:30

Ternyata tidak dapat menemukannya karena mac saya tidak sensitif terhadap tipe tetapi ubuntu. Standarisasi nama file saya memperbaikinya.

Dockerfile ini berfungsi dengan baik

FROM node:12.14.0-alpine
LABEL version="1.02"

#create working directories etc.
RUN mkdir -p /app

# Create a /App Directory to install the application in
WORKDIR /app

# Copy all files from the main project to the container
COPY . /app/

RUN npm install
# COPY package*.json ./app/
# RUN npm install
# Standard npm commands
## DELETE THE FOLLOWING WHEN DOCKER CONTAINER IS FIXED
RUN cd node_modules

# create an uploads directory , go into it and add a placeholder file to avoid bug.
RUN mkdir uploads
RUN touch uploads/uploadedFile.csv
#go back into root folder
# RUN cd ..
# RUN ls

# start project and expose port 3000 as localhost
CMD node ./bin/www
EXPOSE 3000
0
Jason Harder 31 Desember 2019, 22:02