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

在Plesk中运行NextJs报错:无法找到指定模块

Plesk部署Next.js项目时Passenger报MODULE_NOT_FOUND错误

错误日志

App 2825468 output: internal/modules/cjs/loader.js:905
App 2825468 output: throw err;
App 2825468 output: ^
App 2825468 output:
App 2825468 output: Error: Cannot find module '../build/output/log'
App 2825468 output: Require stack:
App 2825468 output: - /var/www/vhosts/immatures.de/mysmug.immatures.de/node_modules/.bin/next
App 2825468 output: - /usr/share/passenger/helper-scripts/node-loader.js
App 2825468 output: at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15)
App 2825468 output: at Function.Module._load (internal/modules/cjs/loader.js:746:27)
App 2825468 output: at Module.require (internal/modules/cjs/loader.js:974:19)
App 2825468 output: at Module.require (/usr/share/passenger/helper-scripts/node-loader.js:80:25)
App 2825468 output: at require (internal/modules/cjs/helpers.js:101:18)
App 2825468 output: at Object.<anonymous> (/var/www/vhosts/immatures.de/mysmug.immatures.de/node_modules/.bin/next:7:35)
App 2825468 output: at Module._compile (internal/modules/cjs/loader.js:1085:14)
App 2825468 output: at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
App 2825468 output: at Module.load (internal/modules/cjs/loader.js:950:32)
App 2825468 output: at Function.Module._load (internal/modules/cjs/loader.js:790:12) {
App 2825468 output: code: 'MODULE_NOT_FOUND',
App 2825468 output: requireStack: [
App 2825468 output: '/var/www/vhosts/immatures.de/mysmug.immatures.de/node_modules/.bin/next',
App 2825468 output: '/usr/share/passenger/helper-scripts/node-loader.js'
App 2825468 output: ]
App 2825468 output: }

环境与排查情况

  • Node.js版本:14.20.0(尝试16.5版本时npm install出现依赖错误,故降级)
  • 已多次删除node_modules并重新执行npm install
  • 本地Dev模式无法启动项目,仅设置start为默认命令时出现Passenger错误
  • 控制台直接执行npm run build && npm run start可正常运行,但通过Plesk启动后,再用控制台启动会报错,重装node_modules可恢复控制台运行

当前Plesk应用配置

Node.js-Version: 14.20.0  
Package Manager: npm    
Document Root: /mysmug.immatures.de/.next/static    
Application Mode: production  
Application URL: http://mysmug.immatures.de
Application Root: /mysmug.immatures.de    
Application Startup File: node_modules/.bin/next    

解决方案

  1. 修正启动文件路径
    不要直接指向node_modules/.bin/next,改为使用自定义启动脚本。在项目根目录创建server.js:

    const { createServer } = require('http');
    const { parse } = require('url');
    const next = require('next');
    
    const dev = false;
    const app = next({ dev });
    const handle = app.getRequestHandler();
    
    app.prepare().then(() => {
      createServer((req, res) => {
        const parsedUrl = parse(req.url, true);
        handle(req, res, parsedUrl);
      }).listen(process.env.PORT || 3000, (err) => {
        if (err) throw err;
        console.log('> Ready on http://localhost:3000');
      });
    });
    

    然后在Plesk的Application Startup File中设置为server.js。

  2. 调整文档根目录
    将Plesk的Document Root改为/mysmug.immatures.de,Next.js生产模式下会通过服务自动处理静态资源,无需单独指向.next/static。

  3. 确保build产物完整
    执行npm run build后,检查.next/build/output/log文件是否存在。如果缺失,删除.next文件夹后重新执行npm run build。

  4. 清理Passenger缓存
    通过Plesk面板重启应用,或执行命令:

    passenger-config restart-app /var/www/vhosts/immatures.de/mysmug.immatures.de
    
  5. 统一Node.js环境
    确保Plesk使用的Node.js版本与本地完全一致(14.20.0),在项目根目录创建.nvmrc文件:

    14.20.0
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 02:24:13