代码之家  ›  专栏  ›  技术社区  ›  user565

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

  •  0
  • user565  · 技术社区  · 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构建-t节点服务器。 <docker运行的节点服务器

    但是在运行节点服务器时得到错误:

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

    知道我在这里错过了什么吗?

    1 回复  |  直到 1 年前
        1
  •  1
  •   robertklep    1 年前

    这个 node: Node.js v16中引入了导入核心模块的前缀,而Dockerfile是基于v15的( FROM node:15 ).

    推荐文章