You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CircleCI部署至FTP服务器报错:无法找到deploy.js模块

解决CircleCI执行部署脚本时的模块找不到错误

首先,咱们一眼就能揪出问题的核心:你在CircleCI配置里指定要运行的是.circleci/deploy.js,但你的部署脚本实际命名为config.js,这就导致Node.js找不到对应的文件,直接抛出了Cannot find module错误。

第一步:修正CircleCI配置文件

把.circleci/config.yml里的部署命令改成指向正确的脚本文件:

version: 2
jobs:
  build:
    docker:
      - image: circleci/node:latest
    steps:
      - checkout
      - run: npm install
      # 这里把deploy.js改成config.js,匹配你的实际脚本文件名
      - run: node .circleci/config.js
      - run: echo "WE'RE ONLINE"
workflows:
  version: 2
  deploy:
    jobs:
      - build:
          filters:
            branches:
              only:
                - master

第二步:调整部署脚本细节(避免后续踩坑)

你的config.js里还有两个容易出问题的地方,提前修正掉:

  1. 依赖安装确认:你用到了ftp-deploy模块,要确保这个包能被正确安装。要么把它添加到项目package.json的dependencies中,要么在CircleCI步骤里显式安装:
    - run: npm install ftp-deploy
    
  2. 本地根目录路径错误:当前localRoot: __dirname + "/"指向的是.circleci/目录,这意味着你只会把这个目录下的文件传到FTP服务器,但你应该是要部署项目根目录的文件吧?修改路径前先引入path模块,调整后的脚本如下:
var FtpDeploy = require('ftp-deploy');
var path = require('path'); // 新增path模块引入
var ftpDeploy = new FtpDeploy();
var config = {
  username: process.env.USERNAME_HV,
  password: process.env.PASSWORD_HV,
  host: process.env.FTPHOST,
  port: 21,
  // 修改为项目根目录,确保上传的是你需要的文件
  localRoot: path.join(__dirname, '../'),
  remoteRoot: "/home/hiversho/public_html/gitlab-pipeline-demo/",
  include: ['*']
}
ftpDeploy.deploy(config, function(err) {
  if (err) console.log(err)
  else console.log('finished');
});

最后确认

确保你已经在CircleCI的项目环境变量里正确设置了USERNAME_HV、PASSWORD_HV和FTPHOST这三个变量,然后重新触发master分支的构建就可以了。

内容的提问来源于stack exchange,提问作者Saif71

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:42:37