Javascript Dockerfile-mocha中出现意外令牌错误
下面是dockerfile,它存储为图像标签Javascript Dockerfile-mocha中出现意外令牌错误,javascript,docker,docker-compose,mocha.js,dockerfile,Javascript,Docker,Docker Compose,Mocha.js,Dockerfile,下面是dockerfile,它存储为图像标签somehub/someapp specs: FROM ubuntu:trusty MAINTAINER Developer team <developerteam@abc.com> # Prevent dpkg source ENV TERM=xterm-256color # Set mirrors to ca RUN sed -i "s/http:\/\/archive./http:\/\/ca.archive./g" /etc/
somehub/someapp specs
:
FROM ubuntu:trusty
MAINTAINER Developer team <developerteam@abc.com>
# Prevent dpkg source
ENV TERM=xterm-256color
# Set mirrors to ca
RUN sed -i "s/http:\/\/archive./http:\/\/ca.archive./g" /etc/apt/sources.list
# Install node.js
RUN apt-get update && \
apt-get install curl -y && \
curl -sL http://deb.nodesource.com/setup_4.x | sudo -E bash - && \
apt-get install -y nodejs
COPY . /app
WORKDIR /app
# Install application dependencies
RUN npm install -g mocha && \
npm install
# Set mocha test runner as entrypoint
ENTRYPOINT ["mocha"]
启动
mocha
容器时出错:
$ docker-compose up test
release_dbc_1 is up-to-date
Starting release_webroot_1 ... done
Creating release_app_1 ... done
Creating release_nginx_1 ... done
Creating release_test_1 ... done
Attaching to release_test_1
test_1 | /usr/lib/node_modules/mocha/bin/mocha:13
test_1 | const {deprecate, warn} = require('../lib/utils');
test_1 | ^
test_1 |
test_1 | SyntaxError: Unexpected token {
test_1 | at exports.runInThisContext (vm.js:53:16)
test_1 | at Module._compile (module.js:373:25)
test_1 | at Object.Module._extensions..js (module.js:416:10)
test_1 | at Module.load (module.js:343:32)
test_1 | at Function.Module._load (module.js:300:12)
test_1 | at Function.Module.runMain (module.js:441:10)
test_1 | at startup (node.js:140:18)
test_1 | at node.js:1043:3
release_test_1 exited with code 1
复制/Dockerfile中的app
指令正在复制package.json,版本如下:
{
"name": "someappspecs",
"version": "0.1.0",
"description": "someapp acceptance tests",
"main": "app.js",
"scripts": {
"test": "mocha"
},
"author": "xyz",
"license": "ISC",
"dependencies": {
"bluebird": "^3.7.0",
"chai": "^4.2.0",
"chai-as-promised": "^7.1.1",
"mocha": "^6.2.1",
"mocha-jenkins-reporter": "^0.4.2",
"superagent": "^5.1.0",
"superagent-promise": "^1.1.0"
}
}
mocha
用于对release\u app\u 1
容器进行验收测试
如何解决此意外的令牌错误?看起来与其他容器服务无关。这是因为摩卡需要node>6.0,而您的则需要node>4.x 从v6.0.0开始,Mocha需要Node.js v6.0.0或更新版本 尝试使用节点映像升级节点:
FROM node:10.16
或者您可以更新当前dockerfile,如下所示:
RUN apt-get update && \
apt-get install curl -y && \
curl -sL https://deb.nodesource.com/setup_10.x | bash - && \
apt-get install -y nodejs
这是因为Mocha要求node>6.0,而您的node>4.x 从v6.0.0开始,Mocha需要Node.js v6.0.0或更新版本 尝试使用节点映像升级节点:
FROM node:10.16
或者您可以更新当前dockerfile,如下所示:
RUN apt-get update && \
apt-get install curl -y && \
curl -sL https://deb.nodesource.com/setup_10.x | bash - && \
apt-get install -y nodejs
哪个版本的node正在运行它?看起来它可能无法识别对象解构语法。@david Query使用package.json编辑。我想是节点4。我更新了以下更改。。正在测试哪个版本的node正在运行它?看起来它可能无法识别对象解构语法。@david Query使用package.json编辑。我想是节点4。我更新了以下更改。。testingIn package.json,是Verizon的与node 6I匹配的工具吗?我不确定,这取决于您的节点版本和开发模式。它应该与此相同,以便在节点10.16中的建议更改后,所有内容都将保持一致
/bin/sh:1:sudo:not found
。对不起,我从问题中复制了它。移除sudo应该可以工作。答案已更新@overexchangeIn package.json是Verizon的与node 6I相匹配的工具吗?我不确定,这取决于您的节点版本和开发模式。它应该与此相同,以便在节点10.16中的建议更改后,所有内容都将保持一致/bin/sh:1:sudo:not found
。对不起,我从问题中复制了它。移除sudo应该可以工作。答案已更新@过度交换