Search code examples
node.jsdockerdockerfile

Unable to run the node script in docker container


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?


Solution

  • The node: prefix to import core modules were introduced in Node.js v16, while your Dockerfile is based on v15 (FROM node:15).