我将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
的脚本中安装软件包的。
答案 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