无法在docker容器中运行节点脚本

问题描述 投票:0回答:1

我正在尝试在 docker 容器上设置节点服务器,我创建了一个包含以下内容的 Dockerfile:

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"]

这是示例 rdv.js 脚本:

var io = require('socket.io')(1500);
var PeerServer = require('peer').PeerServer;
var server = new PeerServer({port: 9000, path: '/myapp'});

....

我使用以下命令构建映像并运行容器: < docker build -t nodeserver . < docker run nodeserver

但是在运行节点服务器时出现错误:

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'
  ]
}

知道我在这里缺少什么吗?

node.js docker dockerfile
1个回答
0
投票

用于导入核心模块的

node:
前缀是在 Node.js v16 中引入的,而您的 Dockerfile 是基于 v15 的 (
FROM node:15
)。

© www.soinside.com 2019 - 2024. All rights reserved.