我正在尝试在 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:
前缀是在 Node.js v16 中引入的,而您的 Dockerfile 是基于 v15 的 (FROM node:15
)。