应使用持续更新的 sftp 插件(liximomo 开发)替代已停更的 ftp-simple;它基于 ssh 更安全,需正确配置 sftp.json 的 host、port、username、remotepath 四字段,注意路径格式、编码及权限设置。

Node.js 环境和 FTP 服务器是两个独立的事物,VSCode 本身不提供 FTP 服务器功能,也不能“搭建 FTP 服务器”——它只是编辑器。你真正需要的,是:
- 在本地用
Node.js启一个HTTP 服务器(比如用express),用于开发调试; - 或者用 VSCode 配合 SFTP 插件,连接并上传文件到远程 FTP/SFTP 服务器(不是在本地搭 FTP 服务)。
下面分两块说清楚怎么做、为什么、容易错在哪。
确认你到底要什么:HTTP 开发服务 vs 远程 FTP 上传
很多人混淆了这两个场景:
- 想本地写代码、实时预览网页?→ 该起一个
http-server或express服务,端口如3000或8080,浏览器访问http://localhost:3000 - 想把写好的文件自动传到阿里云/腾讯云服务器?→ 该配 SFTP 插件,走
sftp协议(推荐)或ftp(不安全,仅内网可用)
如果你真想在本机跑一个可被他人访问的 FTP 服务(极少见),得额外装 pure-ftpd 或 vsftpd,和 VSCode 无关,也不建议新手折腾。
用 VSCode + Node.js 起一个本地 HTTP 服务
这是前端/全栈开发最常用的方式,轻量、即时、无需部署。
确保已安装 node -v 和 npm -v;然后:
- 新建项目文件夹,终端里运行
npm init -y - 装
express:npm install express - 新建
server.js,内容如下:
const express = require('express');
const app = express();
app.use(express.static('.')); // 当前目录为静态资源根
app.listen(3000, () => console.log('http://localhost:3000'));
- 按
Ctrl+Shift+P→ 输入Tasks: Run Task→ 选npm: start(或直接终端运行node server.js) - VSCode 内置终端能直接看到日志,
Ctrl+C可停止
注意:express.static('.') 会暴露当前目录所有文件,别放敏感配置;生产环境必须改路径或加权限控制。
用 VSCode 的 SFTP 插件上传到远程服务器
这才是 VSCode 做 FTP 相关事的正经用法——它不搭服务器,只传文件。
- 扩展市场搜
sftp,装第一个(spetools.sftp,作者Arjun Patel) -
Ctrl+Shift+P→ 输入sftp:config→ 回车,生成.vscode/sftp.json - 填关键字段(务必核对):
{
"name": "prod-server",
"host": "47.98.x.x", // IP 或域名,别写 ftp://
"protocol": "sftp", // 强烈建议用 sftp(端口 22),不用 ftp(端口 21)
"port": 22,
"username": "deploy",
"password": "xxx", // 或改用 privateKey(更安全)
"remotePath": "/var/www/html/",
"uploadOnSave": true, // 保存即上传,但首次需右键 → "Upload File"
"ignore": [".vscode", ".git", "node_modules"]
}
- 上传失败常见原因:
remotePath权限不够(检查deploy用户对该目录是否有写权限)、password包含特殊字符(建议改用密钥)、protocol写成ftp却连的是sftp端口 - 上传后文件没更新?检查服务器上是否开了 SELinux 或防火墙拦截了 22 端口
别踩这些坑
真实项目里最容易翻车的几个点:
-
sftp.json放错位置:必须在项目根目录下的.vscode/文件夹里,不是用户目录或全局设置 - 误把
uploadOnSave当成“自动同步”:它只上传当前编辑的文件,不会递归同步整个文件夹;批量操作要用右键 →Upload Folder - 本地改了
package.json却上传了——ignore里漏了node_modules,导致服务器磁盘爆满 - 用
ftp协议时没开被动模式(passive字段未设true),结果上传卡住或断连
协议选型比参数更重要:现在几乎没有理由用明文 ftp,SSH 通道的 sftp 是默认且安全的选择,别为了省事降级。











