圈ci中的npm安装失败(angular cli project)

时间:2017-09-04 05:08:57

标签: circleci

我在Angular cli中创建了一个项目。我想用圆圈ci做CI。该项目上传到Bitbucket,并由Circle CI正确选择。但构建失败了。以下是config.yml(选择了CircleCI的sample.yml并更改了它(添加了ng测试)。我假设之前由angularcli创建的package.json将安装AngularCLI。

version: 2
jobs:
  build:
    #working_directory: ~/mern-starter
    # The primary container is an instance of the first list image listed. Your build commands run in this container.
    docker:
      - image: circleci/node:7.10.0
    # The secondary container is an instance of the second listed image which is run in a common network where ports exposed on the primary container are available on localhost.   
      #- image: mongo:3.4.4
    steps:
      - checkout
      - run:
          name: Update npm
          command: 'sudo npm install -g npm@latest'
      - restore_cache:
          key: dependency-cache-{{ checksum "package.json" }}
      - run:
          name: Install npm wee
          command: npm install
      - save_cache:
          key: dependency-cache-{{ checksum "package.json" }}
          paths:
            - node_modules
  test:
    docker:
      - image: circleci/node:7.10.0
      #- image: mongo:3.4.4
    steps:
      - checkout
      - run:
          name: Test
          command: ng test
      #- run:
       #   name: Generate code coverage
        #  command: './node_modules/.bin/nyc report --reporter=text-lcov'
      #- store_artifacts:
       #   path: test-results.xml
        #  prefix: tests
      #- store_artifacts:
       #   path: coverage
        #  prefix: coverage

workflows:
  version: 2
  build_and_test:
    jobs:
      - build
      - test:
          requires:
            - build
          filters:
            branches:
              only: dev

错误

#!/bin/bash -eo pipefail
npm install
module.js:472
    throw err;
    ^

Error: Cannot find module 'process-nextick-args'
    at Function.Module._resolveFilename (module.js:470:15)
    at Function.Module._load (module.js:418:25)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/readable-stream/lib/_stream_readable.js:26:23)
    at Module._compile (mod

我在npm install步之后看到以下行,所以我想已经安装了process-nexttick-args。 process-nextick-args@1.0.7 node_modules/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-arg

1 个答案:

答案 0 :(得分:2)

以下配置为我工作。我用过CircleCI 2.0。我还在改进它,将来可能会改变答案。

version: 2

jobs:
    build:
        working_directory: ~/angularcli
        # The primary container is an instance of the first list image listed. Your build commands run in this container.
        docker:
            - image: circleci/node:6-browsers
              environment:
                  CHROME_BIN: "/usr/bin/google-chrome"
        steps:
            - checkout
            - run:
                name: Install node_modules with npm
                command: npm install
            - save_cache:
                key: dependency-cache-{{ checksum "package.json" }}
                paths:
                    - ./node_modules
            - run:
                name: Install angularcli
                command: sudo npm install -g @angular/cli@latest
            - run:
                name: Run unit tests with karma
                command: ng test
            - store_test_results:
                path: test-results.xml

除了上面的脚本,在karma.conf.js singleRun: true中将singleRun标志设置为true,以便在运行所有测试用例后退出Karma。没有此标志,Karma以连续模式运行,ng test停止不会结束,超时后测试失败。