Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js &引用;无法加载gRPC二进制模块";在Docker容器中运行Sails.js应用程序时出错_Node.js_Docker_Google Cloud Platform_Sails.js - Fatal编程技术网

Node.js &引用;无法加载gRPC二进制模块";在Docker容器中运行Sails.js应用程序时出错

Node.js &引用;无法加载gRPC二进制模块";在Docker容器中运行Sails.js应用程序时出错,node.js,docker,google-cloud-platform,sails.js,Node.js,Docker,Google Cloud Platform,Sails.js,我有一个本地Docker开发环境来构建Sails.js应用程序。这就是我的Dockerfile的外观: FROM node:8.12 LABEL Name=us.gcr.io/my-project/my-app Version=1.0.0 # Container configuration RUN npm install -g sails@1.0.2 grunt@1.0.3 nodemon@1.18.4 WORKDIR /usr/src/app COPY ./server/package.js

我有一个本地Docker开发环境来构建Sails.js应用程序。这就是我的Dockerfile的外观:

FROM node:8.12
LABEL Name=us.gcr.io/my-project/my-app Version=1.0.0

# Container configuration
RUN npm install -g sails@1.0.2 grunt@1.0.3 nodemon@1.18.4
WORKDIR /usr/src/app
COPY ./server/package.json ./package.json
RUN npm install
VOLUME /usr/src/app
EXPOSE 1337
version: '3.4'

services:
  server:
    image: us.gcr.io/my-project/my-app:latest
    build: .
    environment:
      NODE_ENV: development
      IS_DEV_MACHINE: "yes"
    ports:
      - 1338:1337 # HOST_PORT is 1339 to avoid conflicts with other Sails.js apps running on host
    volumes:
      - ./server:/usr/src/app
    entrypoint: nodemon

  mongodb:
    image: mongo:4
    ports:
      - 27018:27017 # HOST_PORT is 27018 to avoid conflicts with other MongoDB databases running on host
    volumes:
      - ../database:/data/db
这就是我的docker-compose.yml文件的外观:

FROM node:8.12
LABEL Name=us.gcr.io/my-project/my-app Version=1.0.0

# Container configuration
RUN npm install -g sails@1.0.2 grunt@1.0.3 nodemon@1.18.4
WORKDIR /usr/src/app
COPY ./server/package.json ./package.json
RUN npm install
VOLUME /usr/src/app
EXPOSE 1337
version: '3.4'

services:
  server:
    image: us.gcr.io/my-project/my-app:latest
    build: .
    environment:
      NODE_ENV: development
      IS_DEV_MACHINE: "yes"
    ports:
      - 1338:1337 # HOST_PORT is 1339 to avoid conflicts with other Sails.js apps running on host
    volumes:
      - ./server:/usr/src/app
    entrypoint: nodemon

  mongodb:
    image: mongo:4
    ports:
      - 27018:27017 # HOST_PORT is 27018 to avoid conflicts with other MongoDB databases running on host
    volumes:
      - ../database:/data/db
正常情况下,一切正常。但是,我最近在应用程序中导入并初始化了NPM包,现在,当我运行
docker compose up
时,出现以下错误:

server_1   | error: Bootstrap encountered an error: (see below)
server_1   | error: Failed to lift app: { Error: Failed to load gRPC binary module because it was not installed for the current system
server_1   | Expected directory: node-v57-linux-x64-musl
server_1   | Found: [node-v57-darwin-x64-unknown]
server_1   | This problem can often be fixed by running "npm rebuild" on the current system
server_1   | Original error: Cannot find module '/usr/src/app/node_modules/grpc/src/node/extension_binary/node-v57-linux-x64-musl/grpc_node.node'
server_1   |     at Object.<anonymous> (/usr/src/app/node_modules/grpc/src/grpc_extension.js:53:17)
server_1   |     at Module._compile (module.js:653:30)
server_1   |     at Object.Module._extensions..js (module.js:664:10)
server_1   |     at Module.load (module.js:566:32)
server_1   |     at tryModuleLoad (module.js:506:12)
server_1   |     at Function.Module._load (module.js:498:3)
server_1   |     at Module.require (module.js:597:17)
server_1   |     at require (internal/module.js:11:18)
server_1   |     at Object.<anonymous> (/usr/src/app/node_modules/grpc/src/client_interceptors.js:145:12)
server_1   |     at Module._compile (module.js:653:30)
server_1   |     at Object.Module._extensions..js (module.js:664:10)
server_1   |     at Module.load (module.js:566:32)
server_1   |     at tryModuleLoad (module.js:506:12)
server_1   |     at Function.Module._load (module.js:498:3)
server_1   |     at Module.require (module.js:597:17)
server_1   |     at require (internal/module.js:11:18) code: 'MODULE_NOT_FOUND' }
mongodb_1  | 2018-10-09T09:27:52.521+0000 I NETWORK  [conn4] end connection 172.19.0.2:48730 (0 connections now open)

我只是不明白为什么会发生这个错误。我甚至尝试将我的基本Docker图像更改为官方的Google App Engine Docker图像(gcr.io/Google appengine/nodejs),但也没有任何帮助。我在任何地方都找不到解决这个问题的办法。感谢您的帮助。

看起来项目很难找到诸如gRPC二进制模块之类的依赖项(使用
npm install gRPC
修复)或者它们当前所在的位置-

看起来项目很难找到诸如gRPC二进制模块之类的依赖项(使用
npm install grpc
)或它们当前所在的位置进行修复-

您是否在本地Mac(
darwin
)环境中进行了
npm安装
,而本应在容器中进行(
linux
)?grpc二进制文件用于错误的操作系统,因此出现错误。这通常发生在本地Mac运行linux Docker容器时


预期目录:node-v57-linux-x64-musl
找到:[节点-v57-darwin-x64-unknown]


解决方案是
rm-fr node_模块
并在容器中安装
npm

您是否在本地Mac(
darwin
)环境中安装了
npm
,而本应在容器中安装(
linux
)?grpc二进制文件用于错误的操作系统,因此出现错误。这通常发生在本地Mac运行linux Docker容器时


预期目录:node-v57-linux-x64-musl
找到:[节点-v57-darwin-x64-unknown]


解决方案是
rm-fr node\u模块
,并在容器中安装
npm

通过以下命令重建应用程序

npm rebuild --target=8.1.0 --target_platform=linux --target_arch=x64 --target_libc=musl

通过以下命令重建应用程序

npm rebuild --target=8.1.0 --target_platform=linux --target_arch=x64 --target_libc=musl

rm-rf node_modules&&rm package-lock.json&&npm install
maybe?@mikermcneil同意,但都在容器中-请参阅我上面的答案
rm-rf node_modules&&rm package-lock.json&&npm install
maybe?@mikermcneil同意,但都在容器中-请参阅上面的答案根据错误消息,您可以运行在当前系统上运行“npm rebuild”以查看是否有帮助。对于类似的“错误:无法加载gRPC二进制模块…”问题,请访问并尝试他们的建议。根据错误消息,您可以在当前系统上运行“npm rebuild”以查看是否有帮助。对于类似的“错误:无法加载gRPC二进制模块…”问题。。。“,请访问并尝试他们的建议。