pnpm 拉取github的n8n项目运行

前言:

本文章旨在记录单纯通过pnpm拉取拉取github开源项目n8n并成功运行期间遇到的问题

已退坑多年,私信可能不及时回复,请谅解(已换用户名由"鬼小妞"改为"姜姜小妞")

请确保已安装git及nvm,或移步 专栏文章前端环境搭建与准备安装git及nvm后再回来

流程

  • 1.在github上下载n8n项目
  • 2.切换或下载 "node": ">=22.16", "pnpm": ">=10.22.0"
  • 3.pnpm install安装依赖,(出错后清除pnpm缓存删除node_moudles依赖包后重试)
  • 4.pnpm build 打包项目 (打包出错大部分是依赖安装问题请重复执行步骤3)
    • 必须打包成功后才可成功pnpm start运行项目
  • 5.pnpm start运行项目
    • 出错请检查打包后是否有packages\cli\dist\config是否存在,5678端口是否被占用,全局安装的n8n依赖包是否正在启动(我是直接删除了npm全局安装路径的n8n,非当前项目依赖)

具体步骤如下:

1. 下载n8n

我们可以根据自己喜好git clone下载或者下载zip后解压,两种方式下载后基本都是一样的,我使用的是zip方式会快一点。

方式1:通过git clone下载

你可以直接通过git clone下载:

js 复制代码
git clone https://github.com/n8n-io/n8n.git

方式2:通过下载zip解压

为了避免由于网络等原因导致下载不完整或失败的问题,我们也可通过下载zip包解压方式进行。

进入 github.com/n8n-io/n8n 下载zip

把下载好的压缩包(25M左右)解压到n8n-master(73.7M左右)

2. 切换node版本并下载pnpm

我们查看项目package.json文件可以看到,对于node和pnpm是需要固定版本及以上的,如下

"node": ">=22.16",

"pnpm": ">=10.22.0"

2.1 安装node 22.16.0

由于我是使用nvm管理node版本,我是通过cmd管理员身份运行nvm下载node22.16.0

使用nvm依次输入命令行

js 复制代码
nvm install 22.16.0
nvm use 22.16.0
nvm ls

关于使用nvm管理node版本不再介绍,请移步查看 专栏文章前端环境搭建与准备---> nvm安装与配置

2.2 安装pnpm 10.22.0

npm全局安装pnpm 10.22.0

js 复制代码
npm install -g pnpm@10.22.0

3. 项目运行前准备

3.1 pnpm install安装模块依赖

通过pnpm install进行项目依赖安装(默认国外的下载源需要网络非常好,网络差可能导致依赖下载失败)

js 复制代码
pnpm install

如果觉得依赖安装太慢,你可以通过指定下载源(镜像)来安装(可能会存在源库中缺失某些依赖问题)

js 复制代码
pnpm install --registry https://registry.npmmirror.com/

依赖下载失败后,重新安装未成功的问题如图, 请按以下操作:

1.删除存储中未被任何项目使用的包版本

复制代码
pnpm store prune

2.删除node_modules文件夹:

bash 复制代码
rm -rf node_modules

必要时删除 pnpm-lock.yaml文件,建议暂时不要删除(有时候pnpm-lock.yaml中的版本与我们下载的版本不匹配,所以一般项目配置当中都忽略提交此文件)

3.重新执行强制安装命令

js 复制代码
pnpm install --force

4.如果依赖重复安装失败,缺失部分依赖,只能手动一个个添加(我就是因为这个一直弄了很久),如果重复因为以上问题如:"ELIFECYCLE  Command failed with exit code 1.",请执行以上步骤1到4,非必要请勿进行步骤5操作,一般有问题都是因为依赖包安装缺失问题。

5.如果强制安装后提示补丁patchedDependencies相关信息导致安装失败,如下图:

一般到提示patchedDependencies字段的,那基本上,按照我在重复演示此流程的经验,就是依赖出错了,即使你在删除patchedDependencies字段内容后安装成功,后续依旧会在pnpm build打包环境出现问题。请你重新开始下载依赖安装,必要时请从github 下载n8n项目这个步骤重新开始。

可以先删除package.json文件夹中的patchedDependencies字段内容,

删除补丁如下:

删除后:

在安装后记得恢复该字段内容。如果删除后重新安装依赖到pnpm build打包出现报错 @n8n/imap#build问题,那一定是依赖安装不成功导致的出错,一般到提示patchedDependencies字段的那基本上,我在重复演示此流程经验,就是依赖出错了,即使你在删除patchedDependencies字段内容后安装成功,后续依旧会在pnpm build打包环境出现问题。请你重新开始下载依赖安装,必要时请从github 下载n8n项目这个步骤重新开始。

3.2 pnpm build项目

js 复制代码
pnpm build

打包成功如下所示:

必须打包成功后有/dist/config目录文件才可成功pnpm start运行项目

为何需要打包

当使用pnpm start命令运行项目后出现非模块的问题,如果出现 Error: Cannot find module '../dist/config'如下

是因为缺失打包文件(很无语的),必须打包成功后才可成功pnpm start运行项目 可以先进行打包产生build相关文件,再运行pnpm start

必须打包成功后才可成功pnpm start运行项目

如果遇到如下打包问题,

报错 @n8n/imap#build问题,请重新安装依赖,我试过很多次,重复操作都遇到这个问题,而后我重新重启,解压下载的n8n项目包重新下载依赖,删除依赖node_moudles包

4. 运行项目

必须打包成功后有/dist/config目录文件才可成功pnpm start运行项目

js 复制代码
pnpm start

打开运行端口就可以看到页面 (首次进入页面需要进行登录注册)

如果运行项目出现如下问题EntityMetadataNotFoundError: No metadata for "InstalledPackages" was found.,请检查全局安装包或者n8n的默认端口占用情况,我之前全局安装过n8n,然后我删除之后,重新运行pnpm start命令就可以正常启动

如果出现 Error: Cannot find module '../dist/config'如下

请先进行 pnpm build打包成功生成dist文件夹后再进行pnpm start启动项目, 必须打包成功后有/dist/config目录文件才可成功pnpm start运行项目

5.流程复盘

  • 1.在github上下载n8n项目
  • 2.切换或下载 "node": ">=22.16", "pnpm": ">=10.22.0"
  • 3.pnpm install安装依赖,(出错后清除pnpm缓存删除node_moudles依赖包后重试)
  • 4.pnpm build 打包项目 (打包出错大部分是依赖安装问题请重复执行步骤3)
    • 必须打包成功后才可成功pnpm start运行项目
  • 5.pnpm start运行项目
    • 出错请检查打包后是否有packages\cli\dist\config是否存在,5678端口是否被占用,全局安装的n8n依赖包是否正在启动(我是直接删除了npm全局安装路径的n8n,非当前项目依赖)

作者已退坑,私信评论不及时,请谅解

个人认为docker部署会更简单,当然,如果你想就是单纯研究n8n源码,那么本篇文章出现的问题可以作为参考,如果你是想把n8n集成到项目中,最好的情况就是vue3作为壳引入n8n,建议是: vue3+n8n+axios(请求)+CORS(跨域)+Pinia或Vuex(数据存储或共享)

相关推荐
by__csdn几秒前
Vue3 setup()函数终极攻略:从入门到精通
开发语言·前端·javascript·vue.js·性能优化·typescript·ecmascript
天天扭码15 分钟前
前端如何实现RAG?一文带你速通,使用RAG实现长期记忆
前端·node.js·ai编程
Luna-player1 小时前
在前端中,<a> 标签的 href=“javascript:;“ 这个是什么意思
开发语言·前端·javascript
lionliu05191 小时前
js的扩展运算符的理解
前端·javascript·vue.js
小草cys1 小时前
项目7-七彩天气app任务7.4.2“关于”弹窗
开发语言·前端·javascript
奇舞精选1 小时前
GELab-Zero 技术解析:当豆包联手中兴,开源界如何守住端侧 AI 的“最后防线”?
前端·aigc
奇舞精选1 小时前
Vercel AI SDK:构建现代 Web AI 应用指南
前端·aigc
神仙别闹2 小时前
基于C语言实现B树存储的图书管理系统
c语言·前端·b树
玄魂2 小时前
如何查看、生成 github 开源项目star 图表
前端·开源·echarts
前端一小卒3 小时前
一个看似“送分”的需求为何翻车?——前端状态机实战指南
前端·javascript·面试