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

Plesk部署Strapi报错Cannot find module 'strapi'如何解决

问题根因

这个报错本质是Node.js运行时在模块搜索路径里找不到strapi依赖包,对应到Plesk+Phusion Passenger的部署场景,常见触发原因有三个:

  1. 启动代码和Strapi版本不匹配:你使用的两行启动代码是Strapi v3版本的官方示例,2022年之后默认安装的Strapi v4/v5版本,核心入口包名已经从strapi改成了@strapi/strapi,require的包名不对会直接触发模块找不到错误。
  2. Plesk路径配置错位:手动在CLI启动Strapi能正常运行,是因为你执行命令时处于Strapi项目的根目录(存在package.json、node_modules的层级),Node会自动从当前工作目录搜索依赖。但Phusion Passenger启动应用时,会严格按照Plesk面板里配置的「应用程序根目录」作为模块搜索起点,如果配置的根目录不是Strapi项目的实际根目录(比如设成了上一级目录、默认的httpdocs目录),就搜不到对应依赖。
  3. 依赖安装路径/权限错误:面板上点NPM install时,依赖会被装到面板配置的应用根目录下,如果之前路径配置错了,依赖就被装到了错误的文件夹里;另外如果node_modules目录的权限不允许Passenger的运行用户读取,也会抛出相同的模块找不到错误。
可落地的修复步骤

按顺序操作,每一步做完可以先测试,不用全做完:

  • 修正启动文件代码
    如果你安装的是Strapi v4及以上版本,把项目根目录下的server.js内容替换为对应版本的正确写法:
    const strapi = require('@strapi/strapi');
    strapi().start();
    
  • 修正Plesk Node.js路径配置
    进入对应站点的Plesk后台「Node.js」设置页:
    • 把「应用程序根目录」设置为Strapi项目的实际根目录,也就是你能看到package.json、node_modules、config文件夹的那一层路径,不要指向父目录或者httpdocs之类的默认web目录
    • 把「应用程序启动文件」设置为相对于上面根目录的server.js路径,不要填绝对路径
    • 面板里选择的Node.js大版本,要和你安装Strapi时用的Node大版本保持一致
  • 重新安装依赖并修正权限
    通过Plesk自带的SSH终端进入上面配置的应用根目录,执行以下命令,不要依赖面板的NPM install按钮:
    # 执行前先确认当前目录下能看到Strapi的package.json,避免路径错误
    ls
    # 清理之前装错位置的依赖和锁文件
    rm -rf node_modules package-lock.json
    # 安装生产环境依赖
    npm install --production
    # 修正目录权限,把<your-site-user>替换为该站点对应的Plesk系统用户名(一般和域名前缀一致)
    chown -R <your-site-user>:psacln node_modules
    chmod -R 755 node_modules
    
  • 重启应用
    回到Plesk Node.js设置页,点击「重启应用」按钮,等待10秒左右再访问站点测试。

排查小技巧:如果操作完还是报错,在应用根目录执行npm ls @strapi/strapi,如果输出为空说明依赖没装对位置,回去重新核对路径配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.11 16:16:22