Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9138

Cannot find module 'express' | dockerでNode.js

$
0
0

Node.jsで必要なファイルやディレクトリなどは割愛

早速、エラーが出たときの設定は以下の通り

Dockerfile

appディレクトリを作成、その中にDockerfileを保存します。

Dockerfile
# nodeの最新バージョンを指定FROM node:10#docker内でのディレクトリを作成RUN mkdir /code
WORKDIR /code# node.js公式サイトのdocker化ドキュメント通り# copy先にcodeディレクトリを指定COPY package*.json /code/RUN npm installRUN npm install express --saveRUN useradd -md /bin/bash localADD . /code/CMD [ "npm", "start" ]

docker-compose.yml

docker-compose.yml
version:'3'services:prog-app:build:context:./app/image:sample-app-nodecommand:bash -c "npm run start"volumes:-./app/:/codecontainer_name:sampappports:-"8001:5000"environment:TZ:'Asia/Tokyo'

package.json

package.json
{"name":"sample-app","version":"1.0.0","description":"sample app description","main":"app.js","scripts":{"test":"echo \"Error: no test specified\"&& exit 1","start":"node app.js"},"repository":{"type":"git","url":""},"license":"MIT","dependencies":{"express":"^4.17.1","ejs":"^3.0.1"},"engines":{"node":"10.x"}}

app.js

app.js
constexpress=require('express');constindex=require('./routes/index');constport=process.env.PORT||5000;constapp=express();app.use('/static',express.static('public'));app.set('view engine','ejs');app.use('/',index);app.listen(port,()=>console.log(`app listening on port ${port}!`));module.exports=app;

error

internal/modules/cjs/loader.js:638
    throw err;    ^

Error: Cannot find module 'express'

expressがなぜか使えない。
以下のサイトに解決策がありました。
https://castaneai.hatenablog.com/entry/2019/01/29/151257

docker-compose.yml
version:'3'services:prog-app:build:context:./app/image:sample-app-nodecommand:bash -c "npm run start"volumes:-./app/:/code-/code/node_modules# 追加container_name:sampappports:-"8001:5000"environment:TZ:'Asia/Tokyo'

dockerコンテナ・イメージ削除しdocker-compose upを再度実行すれば、以下のように成功しました。

>sample-app@1.0.0 start /code
>node app.js

app listening on port 5000!

Viewing all articles
Browse latest Browse all 9138

Trending Articles