当前位置: 首页 > 知识库问答 >
问题:

未找到WSL节点路径?卷似乎已装入

鄂昌胤
2023-03-14

我正在尝试通过docker Compose建立一个单元测试运行时。当我试图通过Docker运行一个npm脚本时-compose节点的行为就好像它在路径上找不到模块:

➜ docker-compose run --rm server npm run test
Starting redis ... done
Starting mongodb ... done

> evolved@1.0.0 test /server
> mocha --recursive tests

sh: mocha: not found
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! evolved@1.0.0 test: `mocha --recursive tests`
npm ERR! spawn ENOENT
➜  dc run --rm --service-ports server ls node_modules/.bin | grep "mocha"
Starting redis   ... done
_mocha                  mocha
    "test": "mocha --recursive tests",
    "build": "gulp default:dev",
version: '3' #compose version
services:
  server:
    build:
      context: .
      dockerfile: Dockerfile.test
    ports:
     - "3000:3000"
    volumes:
     - ".:/server"
    working_dir: "/server"
    depends_on:
      - mongodb
      - redis
    environment:
      PORT: 3000
      NODE_ENV: test
  mongodb:
    image: mongo:latest
    container_name: "mongodb"
    environment:
      - MONGO_DATA_DIR=/data/db
      - MONGO_LOG_DIR=/dev/null
    volumes:
      - ./localdata/db:/data/db
    ports:
        - 27017:27017
    command: mongod --smallfiles --logpath=/dev/null # --quiet
  redis:
    container_name: redis
    command: redis-server --requirepass testredispassword
    image: redis
    ports:
      - "6379:6379"
    volumes:
      - ./localdata/redis:/data
    entrypoint: redis-server --appendonly yes
    restart: always
FROM node:8-alpine

RUN apk update \
    && apk --update --no-cache add \
        git \
        python \
        build-base

ADD ./ /server WORKDIR /server

RUN rm -rf node_modules && npm install && npm run build

我认为这一切都很简单,我以前也做过类似的设置,但在Docker for Mac上。这一次我运行Docker For Windows并通过WSL运行命令。我共享了驱动器,并将/mnt/c绑定到/c。

作为另一个参考,我可以在Docker For Mac上运行单元测试,但在Windows 10上通过连接到Docker For Windows的WSL运行它时得到相同的sh:mocha:not found。它似乎只是二进制文件node_modules/.bin的路径,但没有找到,因为我可以启动项目而没有任何错误,它只是找不到任何二进制文件,如mocha、nsp、gulp等。

共有1个答案

申屠昆
2023-03-14

听起来这类似于我在Windows/WSL环境中遇到的路径问题。尝试将卷定义更改为完整路径,看看这是否解决了问题。

volumes:
 - /c/Users/username/Code/server:/server

即使您已经使用Dockerfile将文件复制到容器中,但当使用docker-compose装入卷时,它并不真正关心这一点。您实际上更改了目录源的映射。

 类似资料:
  • 我有一个树类,看起来像: 其中树根包含指向其他子节点等的子节点的指针。我遇到的问题是,一旦它找到节点,我需要返回到该节点的路径。

  • 我试着从wsl跑出流浪汉: Windows 10 Pro版本1703 Build 15063.540 Ubuntu 16.04.2 LTS 流浪版本:1.9.7 Virtualbox版本:5.1.26r117224 添加到我的bachrc 我已经将virtualbox添加到windows中的路径中 在逃亡途中,我犯了这个错误 Stderr:VBoxManage。exe:错误:RawFile#0未能

  • JNA还加载正确的库。 这里有人知道为什么不起作用吗?是因为我使用的是带有清单的jar应用程序文件吗? 有人有类似的问题吗?

  • 我有一个问题: 我已经做了: 作曲家更新

  • 我想做我的第一个码头集装箱 我安装了dokcer-ce,遵循ubuntu的docker教程。 我创建一个文件夹,并把我的Dockerfile在它。 在这个文件夹中,我做了一个: 我总是有这样的输出 编辑:我在sshd,没有工作?!

  • 我很难让npm命令正常工作,不幸的是,我对unix的了解不足以独自解决这个问题。我所做的只是,我得到以下错误: 当我键入时,我得到 进一步研究这个问题,我发现了这个堆栈溢出的答案: 在zsh中安装npm后未找到命令 根据它的建议,我尝试添加到我的. zshc文件。键入时仍然会出现相同的错误 我可以确认它是在路径收益率 我也可以确认节点已经安装产生 有什么想法吗?我被难住了