ทราวิส: sh: 0: ไม่สามารถเปิด /etc/init.d/xvfb

Travis CI ของฉันใช้ Ubuntu 14.04 และ Node.js 8 .travis.yml ของฉันดูเหมือน:

language: node_js
node_js:
  - 8
sudo: required
addons:
    chrome: stable
before_script:
  - export DISPLAY=:99.0
  - sh -e /etc/init.d/xvfb start
install:
  - npm set progress=false
  - npm install
script:
  - ng lint
  - npm run test
  - npm run e2e
  - npm run build

ฉันพยายามอัปเดตให้ใช้ Ubuntu 16.04 และ Node.js 10 โดยเปลี่ยนเป็น:

language: node_js
node_js:
  - '10'
dist: xenial
sudo: required
addons:
    chrome: stable
before_script:
  - export DISPLAY=:99.0
  - sh -e /etc/init.d/xvfb start
install:
  - npm set progress=false
  - npm install
script:
  - ng lint
  - npm run test
  - npm run e2e
  - npm run build

อย่างไรก็ตาม ตอนนี้ฉันได้รับข้อผิดพลาดเมื่อพยายามเริ่ม xvfb:

0.00s$ sh -e /etc/init.d/xvfb เริ่มต้น

sh: 0: ไม่สามารถเปิด /etc/init.d/xvfb

คำสั่ง sh -e /etc/init.d/xvfb start ล้มเหลวและออกด้วย 127 ในระหว่าง .


person Francesco Borzi    schedule 14.04.2019    source แหล่งที่มา


คำตอบ (2)


วิธีแก้ไขคือการลบ sh -e /etc/init.d/xvfb start ออกจากอาร์เรย์ before_script และเพียงแนะนำ xvfb ในอาร์เรย์ services

ดังนั้น .travis.yml ของฉันตอนนี้จะเป็นดังนี้:

language: node_js
node_js:
  - '10'
dist: xenial
sudo: required
services:
  - xvfb
addons:
    chrome: stable
before_script:
  - export DISPLAY=:99.0
install:
  - npm set progress=false
  - npm install
script:
  - ng lint
  - npm run test
  - npm run e2e
  - npm run build
person Francesco Borzi    schedule 14.04.2019
comment
ใช่ แค่ลืมทำแบบนั้น ขอบคุณ - person Francesco Borzi; 21.09.2019

นอกจากคำตอบที่ยอมรับแล้ว ฉันจะบอกว่าการกำหนดค่าผลลัพธ์ควรจะชัดเจนกว่านี้เล็กน้อยตามเอกสาร Travis การใช้ xvfb เพื่อรันการทดสอบที่ต้องใช้ GUI คุณไม่จำเป็นต้องตั้งค่า DISPLAY ดังนั้นส่วน before_script จึงมากเกินไป:

สิ่งนี้ใช้ได้กับ Ubuntu 16.04 (Xenial) และรุ่นที่ใหม่กว่าเช่นด้วย dist: xenial หรือ dist: bionic
สิ่งต่อไปนี้จะเริ่ม xvfb และตั้งค่าที่เหมาะสมสำหรับตัวแปรสภาพแวดล้อม DISPLAY...

นอกจากนี้ คุณไม่จำเป็นต้องระบุ dist ในปี 2019 สำหรับ node_js เนื่องจาก xenial เป็นอิมเมจเริ่มต้นสำหรับ node_js ภาษาในขณะนี้ (บล็อกโพสต์) ก่อนหน้านี้คือ trusty ดังนั้นวิธีแก้ไขปัญหาอื่นที่เป็นไปได้อาจระบุ dist เป็น trusty (ดู doc) แต่เมื่อพูดถึงค่าเริ่มต้น การกำหนดค่าที่กล่าวถึงอาจมีลักษณะเช่นนี้

language: node_js
node_js:
  - '10'
sudo: required
services:
  - xvfb
addons:
    chrome: stable
install:
  - npm set progress=false
  - npm install
script:
  - ng lint
  - npm run test
  - npm run e2e
  - npm run build
person dhilt    schedule 16.08.2019