作为3dtubetilecreater系列文章的第二篇,本文将聚焦「环境搭建」这一核心入门环节,结合项目实际代码(Gitee地址:https://gitee.com/rzcgis/3dtubetilecreater),从前置环境准备、项目部署、常见问题排查三个维度,提供零踩坑的完整实操教程,所有步骤均经过本地实测验证,适配项目最新代码(1个月前最新提交,核心变更为`tube→pipe`命名统一),新手可直接照搬操作,快速完成项目部署与启动。

本文所有操作均基于Windows系统(Linux/Mac系统操作逻辑一致,仅命令行细节略有差异),核心目标:完成从「环境准备」到「前后端启动」的全流程,最终成功访问前端操作页面(http://localhost:8080)和后端API(http://localhost:3000)。
一、前置环境准备(必看,避坑关键)
项目运行依赖4个核心环境,需严格按照版本要求安装,避免因版本不兼容导致启动失败,以下是具体安装步骤和避坑点,结合项目package.json和README文档要求编写。
1. Node.js(v24.2.0 或更高版本)
安装步骤
-
下载地址:https://nodejs.org/zh-cn/download/current/(选择Windows Installer,64位);
-
安装过程:双击安装包,勾选「Add to PATH」(自动配置环境变量,关键!),其余默认下一步即可;
-
验证安装:打开命令行(CMD/PowerShell),输入以下命令,显示版本≥v24.2.0即为成功:
bashnode -v # 输出示例:v24.2.0 npm -v # 输出示例:10.8.1(配套版本,无需单独安装)
避坑点
- 禁止安装低于v24.2.0的版本:项目
package.json中依赖的Express、Vue等包需高版本Node.js支持,低版本会导致依赖安装失败; - 若已安装低版本Node.js:建议使用nvm(Node版本管理工具)切换版本,避免卸载重装影响其他项目。
2. PostgreSQL + PostGIS(空间数据库核心)
安装步骤
-
下载地址:https://postgis.net/windows_downloads/(选择「PostgreSQL 16 + PostGIS 3.4」组合包,适配项目数据存储需求);
-
安装过程:
- 安装PostgreSQL:设置数据库超级管理员密码(记牢,后续配置需要),端口默认5432(建议不修改,避免后续配置麻烦);
- 安装PostGIS扩展:安装完成后,启动PostgreSQL服务,打开「pgAdmin 4」,连接数据库,右键点击「数据库」→「创建」→「数据库」(命名建议:
pipeline_3d,可自定义); - 启用PostGIS扩展:选中创建的数据库,点击「扩展」→「创建」→「扩展」,搜索「postgis」,选中后点击「确定」,启用空间扩展(核心!无此步骤会导致管线数据无法读取)。
-
验证安装:连接数据库后,执行以下SQL语句,无报错即成功:
sqlSELECT postgis_version(); -- 输出PostGIS版本,示例:3.4.2
避坑点
- 必须启用PostGIS扩展:项目后端核心依赖PostGIS读取空间数据(MultiLineStringZ、PointZ),未启用会导致后端连接数据库后无法执行空间查询;
- 密码记牢:后续修改
server/config.json需填写数据库密码,遗忘会导致连接失败。
3. pg2b3dm(管线主体瓦片转换工具)
安装步骤
-
下载地址:https://github.com/Geodan/pg2b3dm/releases(选择最新版本的Windows二进制包,如`pg2b3dm-windows-amd64.zip`);
-
安装配置:
- 解压压缩包,将解压后的文件夹(如
pg2b3dm-windows-amd64)放在任意路径(建议放在C:\Program Files下,路径无中文、无空格); - 配置环境变量:右键「此电脑」→「属性」→「高级系统设置」→「环境变量」→「系统变量」→「Path」→「编辑」,添加pg2b3dm的解压路径(如
C:\Program Files\pg2b3dm-windows-amd64);
- 解压压缩包,将解压后的文件夹(如
-
验证安装:命令行输入以下命令,显示帮助信息即成功:
bashpg2b3dm --help
避坑点
- 路径无中文、无空格:否则会导致后端调用工具时出现路径识别错误;
- 环境变量配置后需重启命令行:否则配置不生效,无法识别命令。
4. i3dm.export(附属设施瓦片转换工具)
安装步骤
-
下载地址:https://github.com/CesiumGS/i3dm.export/releases(选择最新版本的Windows二进制包);
-
安装配置:与pg2b3dm一致,解压后放在无中文、无空格路径,添加环境变量,重启命令行;
-
验证安装:命令行输入以下命令,显示帮助信息即成功:
bashi3dm-export --help
避坑点
-
与pg2b3dm配置逻辑一致,重点注意路径和环境变量配置;
-
若下载失败,可通过npm全局安装(备用方案):
bashnpm install -g i3dm.export
二、项目部署步骤(结合实际代码,全程实操)
前置环境验证通过后,开始部署项目,所有命令均来自项目package.json配置,步骤如下:
1. 拉取项目代码(从Gitee)
打开命令行,切换到任意空目录(建议路径无中文、无空格,如D:\Projects),执行以下命令拉取代码:
bash
# 克隆项目代码
git clone https://gitee.com/rzcgis/3dtubetilecreater.git
# 进入项目目录
cd 3dtubetilecreater
避坑点
- 若未安装Git:先下载安装Git(https://git-scm.com/download/win),勾选「Add Git to PATH」,安装后重启命令行;
- 克隆失败:检查网络,或直接访问Gitee地址下载压缩包,解压后进入项目目录。
2. 安装项目依赖(一键安装,无需手动配置)
项目package.json中已配置好依赖安装脚本(npm run setup),可一键安装前后端所有依赖,无需分别进入client和server目录手动安装,命令如下:
bash
# 一键安装前后端依赖(核心命令,来自项目package.json)
npm run setup
核心代码解析(贴合项目实际)
项目package.json中setup脚本的核心逻辑(无需修改,仅作理解):
json
{
"scripts": {
"setup": "npm install && cd client && npm install && cd ../server && npm install",
"dev": "concurrently \"npm run server\" \"npm run client\"",
"server": "node server/index.js",
"client": "cd client && npm run serve"
}
}
npm run setup:先安装项目根目录依赖,再分别进入client(前端)和server(后端)目录安装各自依赖,简化操作;- 若手动安装:可分别进入client和server目录,执行
npm install,效果一致,但不如一键脚本高效。
避坑点
- 依赖安装失败:大概率是Node.js版本过低,或网络问题;
- 版本问题:重新安装v24.2.0+版本Node.js,删除
node_modules文件夹后重新执行npm run setup; - 网络问题:切换npm镜像(淘宝镜像),执行
npm config set registry https://registry.npm.taobao.org/,再重新安装。
- 版本问题:重新安装v24.2.0+版本Node.js,删除
3. 启动项目(三种启动方式,按需选择)
项目支持「同时启动前后端」「单独启动后端」「单独启动前端」三种方式,命令均来自项目package.json,结合实际开发场景选择:
方式1:同时启动前后端(推荐,新手首选)
bash
# 同时启动前端(8080端口)和后端(3000端口)
npm run dev
启动成功后,命令行会显示两个服务的启动信息:
- 前端:
App running at: http://localhost:8080 - 后端:
Server running on port 3000
方式2:单独启动后端(开发后端时使用)
bash
# 仅启动后端服务(3000端口)
npm run server
启动成功提示:Server running on port 3000,可通过http://localhost:3000访问后端API(默认返回接口状态,无报错即正常)。
方式3:单独启动前端(开发前端时使用)
bash
# 仅启动前端服务(8080端口)
npm run client
启动成功提示:App running at: http://localhost:8080,此时前端会因未连接后端而无法正常使用转换功能,仅用于前端页面开发。
避坑点
- 端口冲突:若8080或3000端口被其他程序占用,启动会失败;
- 解决方案:关闭占用端口的程序(如关闭其他Vue项目、Node服务),或修改配置文件(后续会讲);
- 启动后报错:若提示「pg2b3dm/i3dm.export 不是内部或外部命令」,说明环境变量配置未生效,重启命令行后重新启动。
4. 验证部署成功(关键步骤)
启动项目后,通过以下两个地址验证,均能正常访问即部署成功:
1. 前端页面验证
打开浏览器,访问:http://localhost:8080,能看到项目操作界面(参考项目examples目录下的操作页面截图),无报错、能正常加载即为成功。
2. 后端API验证
打开浏览器或Postman,访问:http://localhost:3000,若返回接口状态(如{"status":"success","msg":"server running"}),即为后端启动正常(具体返回内容取决于后端index.js代码,无需纠结,无报错即可)。
三、常见问题排查(零踩坑核心,结合项目实际)
结合项目开发和部署过程中遇到的问题,整理以下4类高频问题,提供具体解决方案,均贴合项目代码配置:
1. 依赖安装失败(最常见)
- 问题现象:执行
npm run setup时,出现「npm ERR!」报错,提示依赖安装失败; - 排查思路:Node.js版本过低、网络问题、依赖包缓存问题;
- 解决方案:
- 确认Node.js版本≥v24.2.0,若低于则升级;
- 清除npm缓存:
npm cache clean --force; - 切换淘宝镜像:
npm config set registry https://registry.npm.taobao.org/; - 删除项目根目录、client、server目录下的
node_modules和package-lock.json,重新执行npm run setup。
2. 后端启动失败,提示「无法连接PostgreSQL」
- 问题现象:执行
npm run server后,报错「could not connect to postgres」; - 排查思路:数据库配置错误、PostgreSQL服务未启动、PostGIS扩展未启用;
- 解决方案:
-
检查PostgreSQL服务是否启动:打开「服务」,找到「postgresql-x64-16」(版本可能不同),确保状态为「正在运行」;
-
修改后端配置文件:打开
server/config.json(项目核心配置文件),修改数据库连接信息,与安装PostgreSQL时的配置一致:json{ "db": { "host": "localhost", "port": 5432, "database": "pipeline_3d", // 与你创建的数据库名一致 "user": "postgres", // 默认超级管理员用户名 "password": "123456" // 安装时设置的数据库密码 }, "port": 3000, // 后端端口,可修改 "pg2b3dmPath": "", // 若环境变量配置生效,无需填写 "i3dmExportPath": "" // 若环境变量配置生效,无需填写 } -
确认PostGIS扩展已启用:重新执行
SELECT postgis_version();,无报错即可。
-
3. 端口冲突,启动失败
- 问题现象:启动时提示「EADDRINUSE: address already in use :::8080」(或3000端口);
- 解决方案:
- 方案1:关闭占用端口的程序:打开命令行,执行
netstat -ano | findstr "8080",找到占用端口的进程ID,在任务管理器中结束该进程; - 方案2:修改端口:
-
前端端口(8080):修改
client/vue.config.js中的devServer.port:javascriptmodule.exports = { devServer: { port: 8081, // 改为未占用的端口,如8081 proxy: { '/api': { target: 'http://localhost:3000', // 后端端口,若后端端口修改,此处需同步 changeOrigin: true, pathRewrite: { '^/api': '' } } } } } -
后端端口(3000):修改
server/config.json中的port,改为未占用的端口(如3001),同时修改前端vue.config.js中的target端口,保持一致。
-
- 方案1:关闭占用端口的程序:打开命令行,执行
4. 前端能访问,后端API无法访问(跨域问题)
-
问题现象:前端页面加载正常,但点击转换按钮时,提示「跨域请求失败」;
-
排查思路:前端代理配置错误,未正确转发API请求;
-
解决方案:检查
client/vue.config.js中的代理配置,确保与后端端口一致:javascriptmodule.exports = { devServer: { port: 8080, proxy: { '/api': { target: 'http://localhost:3000', // 后端端口,与server/config.json中的port一致 changeOrigin: true, // 开启跨域代理,关键! pathRewrite: { '^/api': '' } } } } }
修改后,重启前端服务(npm run client),即可解决跨域问题。
四、后续预告
本文已完成3dtubetilecreater项目的环境搭建全流程,涵盖前置环境、项目部署、问题排查,所有步骤均结合项目实际代码和最新提交,新手可直接照搬操作。
下一篇文章(第3篇)将深入拆解项目前后端架构,重点解析client和server目录结构、Express接口设计、Vue+Cesium集成逻辑,结合核心代码片段,带你读懂项目的架构设计思路,敬请关注。
项目联动
- 项目Gitee地址:https://gitee.com/rzcgis/3dtubetilecreater(欢迎star、fork,提出Issues);
- 系列文章链接:第1篇(项目技术解析)、第2篇(环境搭建)已发布,后续将持续更新架构拆解、核心功能实现等内容。