Docker mocha.opts参考babelhook一个目录
有一个mocha.opts文件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 --
--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预期的要高一个级别