I am trying to setup a node server on the docker container, I have created a Dockerfile with the following contents:
FROM node:15
WORKDIR /usr/src/appserver
COPY rdv.js rdv.js
RUN npm install
RUN npm install socket.io
RUN npm install peer
EXPOSE 9000 1500
CMD ["node", "rdv.js"]
Here is the sample rdv.js script:
var io = require('socket.io')(1500);
var PeerServer = require('peer').PeerServer;
var server = new PeerServer({port: 9000, path: '/myapp'});
....
I build the image and run the container using the following commands: < docker build -t nodeserver . < docker run nodeserver
but getting the errors while running the node server:
node:internal/modules/cjs/loader:927
throw err;
^
Error: Cannot find module 'node:http'
Require stack:
- /usr/src/appserver/node_modules/peer/dist/index.cjs
- /usr/src/appserver/rdv.js
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:924:15)
at Function.Module._load (node:internal/modules/cjs/loader:769:27)
at Module.require (node:internal/modules/cjs/loader:996:19)
at require (node:internal/modules/cjs/helpers:92:18)
at Object.<anonymous> (/usr/src/appserver/node_modules/peer/dist/index.cjs:2:23)
at Module._compile (node:internal/modules/cjs/loader:1092:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1121:10)
at Module.load (node:internal/modules/cjs/loader:972:32)
at Function.Module._load (node:internal/modules/cjs/loader:813:14)
at Module.require (node:internal/modules/cjs/loader:996:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/usr/src/appserver/node_modules/peer/dist/index.cjs',
'/usr/src/appserver/rdv.js'
]
}
Any idea what I am missing here?
The node:
prefix to import core modules were introduced in Node.js v16, while your Dockerfile is based on v15 (FROM node:15
).