温馨提示:本文翻译自stackoverflow.com,查看原文请点击:reactjs - "eslint: Permission denied" when deploying React app on Firebase through GitLab
continuous-deployment continuous-integration firebase gitlab reactjs

reactjs - 通过GitLab在Firebase上部署React应用时出现“ eslint:权限被拒绝”

发布于 2020-04-15 10:24:28

我目前正在尝试通过GitLab为Firebase上托管的React应用设置CI。我正在努力克服这一点。还有其他一些建议使用sudo的帖子,但控制台告诉我找不到该命令。

任何帮助将不胜感激。谢谢。

这是我当前的配置:

gitlab-ci.yml配置文件

image: node:10.15.3

cache:
  paths:
  - node_modules/

stages:
  - build
  - deploy
    
deploy_dev:
  stage: deploy
  script:
    - echo "Deploying to staging environment"
    - npm install -g firebase-tools
    - firebase deploy --token $FIREBASE_DEPLOY_KEY --project $CI_ENVIRONMENT_NAME
  environment:
    name: dev
  only:
    - master

Package.json

{
  "name": "react-app",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "bootstrap": "^4.4.1",
    "firebase": "^6.6.2",
    "firebase-functions": "^3.3.0",
    "moment": "^2.24.0",
    "node-sass": "^4.13.1",
    "react": "^16.12.0",
    "react-beautiful-dnd": "^11.0.5",
    "react-dates": "^20.3.0",
    "react-dom": "^16.12.0",
    "react-moment": "^0.9.7",
    "react-perfect-scrollbar": "^1.5.3",
    "react-router-dom": "^5.1.2",
    "react-scripts": "^3.3.0",
    "reactstrap": "^8.2.0",
    "recompose": "^0.30.0"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ]
}

控制台错误指示权限错误

 $ firebase deploy -m "Pipeline $CI_PIPELINE_ID, build $CI_BUILD_ID" --non-interactive --token $FIREBASE_DEPLOY_KEY --project $CI_ENVIRONMENT_NAME
 ⚠  functions: package.json indicates an outdated version of firebase-functions.
  Please upgrade using npm install --save firebase-functions@latest in your functions directory.
 === Deploying to 'cmd-dev-bbdc4'...
 i  deploying functions, hosting
 Running command: npm --prefix "$RESOURCE_DIR" run lint
 > functions@ lint /builds/cmdc/cmd/functions
 > eslint .
 sh: 1: eslint: Permission denied
 npm ERR! code ELIFECYCLE
 npm ERR! errno 126
 npm ERR! functions@ lint: `eslint .`
 npm ERR! Exit status 126
 npm ERR! 
 npm ERR! Failed at the functions@ lint script.
 npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
 npm ERR! A complete log of this run can be found in:
 npm ERR!     /root/.npm/_logs/2020-02-03T01_51_09_788Z-debug.log
 Error: functions predeploy error: Command terminated with non-zero exit code126
 ERROR: Job failed: exit code 1

查看更多

提问者
iwasalive
被浏览
53
iwasalive 2020-02-04 11:50

因此,通过一些实验,我能够确定我必须进入“ functions”目录并运行NPM安装。我猜想这是由于对Firebase项目的结构和节点程序包存在根本性的误解。

我想了解更多,因此,如果有人分享一些对此的了解,将不胜感激。

最后得到一个如下所示的脚本。

deploy_dev:
  stage: deploy
  script:
    - echo "Deploying to staging environment"
    - npm install -g firebase-tools #--allow-root
    - npm ci #--allow-root
    - cd functions # required or would throw the "eslint: not found" error
    - npm ci
    - cd ..
    - firebase use --token $FIREBASE_DEPLOY_KEY $CI_ENVIRONMENT_NAME
    - firebase deploy -m "Pipeline $CI_PIPELINE_ID, build $CI_BUILD_ID" --non-interactive --token $FIREBASE_DEPLOY_KEY
  environment:
    name: dev