Docker:Node Sass找不到您当前环境的绑定:带有Node.js 10.x的Linux / musl 64位

时间:2020-08-07 18:26:31

标签: node.js docker sass

我将Docker与Windows 10上的React前端,Node.js后端和Nginx服务器一起用于本地开发的实时重载。我可以启动这三个服务并检测更改,但是客户端无法编译每个时间不管我做什么。这是错误代码:

Failed to compile.
client_1  | ./src/main.scss (./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-5-1!./node_modules/postcss-loader/src??postcss!./node_modules/resolve-url-loader??ref--6-oneOf-5-3!./node_modules/sass-loader/dist/cjs.js??ref--6-oneOf-5-4!./src/main.scss)
client_1  | Error: Missing binding /client/node_modules/node-sass/vendor/linux_musl-x64-64/binding.node
client_1  | Node Sass could not find a binding for your current environment: Linux/musl 64-bit with Node.js 10.x
client_1  |
client_1  | Found bindings for the following environments:
client_1  |   - Windows 64-bit with Node.js 12.x
client_1  |
client_1  | This usually happens because your environment has changed since running `npm install`.
client_1  | Run `npm rebuild node-sass` to download the binding for your current environment.

我首先要在本地安装软件包,然后创建容器并使用docker-compose构建映像。

client / Dockerfile.dev

FROM node:lts

WORKDIR /client

EXPOSE 3000

CMD ["npm", "start"]

docker-compose.dev.yml (为简便起见,其他服务也被删除)

version: "3"
services:
  client:
    build:
      context: client
      dockerfile: Dockerfile.dev
    image: myapp-client
    environment:
      - NODE_ENV=development
    volumes:
      - ./client:/
      - ./client:/node_modules
    ports:
      - "3000:3000"
    tty: true

我尝试了这些Node.js图像,但无济于事:

node:10
node:latest
node:lts
node:10.16.3
node:8.1.0-alpine

我已经读过RUN npm rebuild node-sass之后在Dockerfile中使用RUN npm install的信息,但这只能在生产环境中使用,因为对于本地开发,我是从package.json的脚本中安装软件包的。

2 个答案:

答案 0 :(得分:0)

这对我有用

sudo ln -s /home/user/.nvm/versions/node/v12.18.2/bin/node /usr/bin/node

答案 1 :(得分:0)

我今天遇到了同样的情况。我在我的 React 客户端中使用 sass 并且需要 node-sass。下一步是对我偶然发现这个问题时的客户端进行 dockerize。我的 Dockerfile 和 docker-compose.yml 与问题中提供的非常相似,除了 volumes 内的 docker-compose.yml 如下所示 -

- ./client:/app
- /app/node_modules

我在 Dockerfile 中的 WORKDIR 是 /app