在Docker容器中运行Aurelia CLI时出错

时间:2017-04-04 12:19:42

标签: dockerfile aurelia-cli

我正在尝试构建一个Docker容器,它具有基于Aurelia的javascript项目所需的大量工具。我有Docker社区版本17.03.1-ce-mac5(16048)和以下Dockerfile:

FROM ubuntu:yakkety

ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update -q && apt-get install -qy \
  apt-utils \
  git \
  chromium-browser \
  xvfb \
  nodejs \
  npm

RUN ln -s /usr/bin/nodejs /usr/bin/node
RUN npm install -g aurelia-cli

WORKDIR /workdir

EXPOSE 9000

我运行命令docker build -t maldrake/aurelia:v1 .来构建容器,然后是

docker run --rm -it -P -v `pwd`:/workdir maldrake/aurelia:v1 /bin/bash

进入docker容器。

此时,当我运行au时,我希望在没有参数运行时,可以看到Aurelia CLI工具的常用输出,可用命令列表及其功能。相反,我得到以下输出:

root@11f3d17edfd5:/workdir# au
/usr/local/lib/node_modules/aurelia-cli/lib/resolve/index.js:1
(function (exports, require, module, __filename, __dirname) { let core = require('./lib/core');
                                                          ^^^

SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:374:25)
    at Object.Module._extensions..js (module.js:417:10)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Module.require (module.js:354:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/usr/local/lib/node_modules/aurelia-cli/bin/aurelia-cli.js:3:17)
    at Module._compile (module.js:410:26)
    at Object.Module._extensions..js (module.js:417:10)
root@11f3d17edfd5:/workdir# 

javascript错误本身很容易理解,如果我去查看index.js文件,那么顶部没有'use strict'。我可以将它添加到该单个文件中,这样可以使Aurelia CLI运行,足以创建一个新项目,但是当我尝试使用其他CLI命令(如au test)时,我遇到了同样的错误顶部没有use strict的其他文件。我应该如何以不同的方式配置我的环境,以便CLI只在安装时工作?

Node和npm版本如下:

root@11f3d17edfd5:/workdir# node -v
v4.2.6
root@11f3d17edfd5:/workdir# npm -v 
3.5.2

我通过Stack Overflow进行了搜索,更一般地说,通过Google进行了搜索,但没有找到相同问题的描述。这可能意味着我错过了一些明显的东西。

1 个答案:

答案 0 :(得分:0)

我使用Aurelia CLI版本0.27.0打开了这个问题。刚刚发布的0.28.0版本修复了该问题。

(编辑)嗯,部分修复。我仍然无法在没有类似错误的情况下执行构建命令。但是,似乎潜在的问题是与节点4.x不兼容。因此,将构建更改为从节点PPA(版本6.10.x)拉出来解决了整个问题:

FROM ubuntu:yakkety

ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update -q && apt-get install -qy \
  apt-utils \
  chromium-browser \
  curl \
  git \
  xvfb

RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
RUN apt-get install -qy \
  nodejs

RUN npm install -g aurelia-cli

WORKDIR /workdir

EXPOSE 9000