簡體   English   中英

使用服務在 Debian 11 上部署 React 應用程序會在 gitlab 上的 CI/CD 管道中引發無法解釋的錯誤

[英]Deploying React app on Debian 11 with serve throws unexplainable error in the CI/CD Pipeline on gitlab

以下是我們用來將應用程序部署到 Debian 服務器的管道。

stages:   
  - deploy

deploy-job:      # This job runs in the deploy stage.
  stage: deploy  # It only runs when *both* jobs in the test stage complete successfully.
  environment: production
  image: node:latest  
  before_script:
    - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
    - eval $(ssh-agent -s)
    - ssh-add <(echo "$SSH_PRIVATE_KEY")
    - mkdir ~/.ssh
    - chmod 700 ~/.ssh
    - echo "$SSH_SERVER_HOSTKEYS" > ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts


  script:
    - echo "Deploying application..."
    - ssh $SSH_USER@$SSH_IP "cd $PROEJCT_PATH/$PROJECT_DIRECTORY_NAME && serve -s build"
    - echo "Application successfully deployed."

但這會引發以下錯誤消息:

文件:///usr/local/lib/node_modules/serve/build/main.js:169
const ipAddress = request.socket.remoteAddress?.replace("::ffff:", "")?? “未知”; ^ SyntaxError: 意外的標記 '.' 在 Loader.moduleStrategy (internal/modules/esm/translators.js:133:18) 在異步鏈接 (internal/modules/esm/module_job.js:42:21)

在 Debian 服務器上安裝節點后,我們遇到了同樣的問題,但在使用nvm install 19.4.0更新后,它解決了問題

命令serve -s build確實在服務器上運行,但在管道中不起作用。

我們正在討論容器使用的是他自己的環境的可能性,但我們不確定該假設。

可以提供一些幫助並解釋問題。

該錯誤來自“新” optional chaining javascript 功能?. 從 v14 開始支持。 但是默認 debian 11 節點版本是 v12。 因此,您應該將節點更新到最新版本

sudo apt remove node npm nodejs #remove them 舊節點/npm
sudo snap install node --classic #see https://snapcraft.io/node

或像您所做的那樣使用nvm 安裝特定節點版本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM