[英]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.