Docker mocha.opts参考babelhook一个目录

Docker mocha.opts参考babelhook一个目录,docker,npm,config,mocha.js,Docker,Npm,Config,Mocha.js,有一个mocha.opts文件 --require babelhook 似乎babelhook需要与node_modules目录位于同一目录中。所以 --myApp --node_modules --babelhook.js --tests --mocha.opts --mytest 这很好,但是,我需要的(如果你关心为什么,我会在最后解释)是这个结构 --node_modules --myApp --babelhook.js --tests --

有一个mocha.opts文件

--require babelhook
似乎babelhook需要与node_modules目录位于同一目录中。所以

--myApp
  --node_modules
  --babelhook.js
  --tests
    --mocha.opts
    --mytest
这很好,但是,我需要的(如果你关心为什么,我会在最后解释)是这个结构

--node_modules
--myApp
  --babelhook.js
  --tests
    --mocha.opts
    --mytest
这是行不通的。我收到摩卡错误“找不到模块babelhook” 我已尝试将mocha.opts文件设置为相对文件。所以

--require ../babelhook
以及其他各种尝试。但我得到的只是“找不到模块../babelhook”

如果我将node_模块向下移动一个级别,它就可以正常工作。有什么办法可以这样做吗

这种文件夹结构的原因是我有一个docker容器,它正在使用硬盘中的卷。docker当docker容器构建时,它将执行npm安装,然后将所有内容从本地路径复制到容器(卷操作)。这将覆盖节点_模块。因此,我进行npm安装,然后将其向上移动到一个文件夹中,这样卷拷贝就不会覆盖它

任何帮助都将不胜感激

编辑 Dockerfile

FROM node:latest

MAINTAINER reharik@gmail.com

ENV PLUGIN_HOME /home/app/current

RUN npm install mocha -g
RUN npm install babel -g

RUN mkdir -p $PLUGIN_HOME

WORKDIR $PLUGIN_HOME

ADD ./package.json $PLUGIN_HOME/package.json

RUN npm install
RUN mv node_modules ../

ADD . $PLUGIN_HOME
docker-compose.yml

plugin:
 build: .
 volumes:
  - .:/home/app/current
 command: tail -f /dev/null
 environment:
  DEBUG: true
  NODE_ENV: development
来自package.json

"scripts": {
    "test": "mocha --opts ./tests/mocha.opts ./tests/unitTests/*.js"
  },

您能否显示您的docker文件、您的
docker运行
以及任何其他可能重现问题的信息?如果您使用docker exec-it container\u id bash进入容器,您能看到babelhook在哪里吗?是的,容器内部的文件夹结构如上图所示(除了/home/app/current/而不仅仅是myApp)。我将在上面发布Dockerfile和docker compose。但我认为docker部分工作正常,只是模块比mocha预期的要高一个级别