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

求助:在支持Node.js的A2共享主机部署SvelteKit应用

解决A2共享主机cPanel/SSH部署SvelteKit应用的两个问题

问题1:cPanel「设置Node.js应用」提示vite不存在

  • 原因:cPanel的Node.js应用部署工具默认仅安装package.json内dependencies中的生产依赖,vite属于devDependencies,不会被自动安装。
  • 解决方法:
    1. 本地预构建后上传:在本地项目执行npm run build完成构建,仅上传构建后的build目录、包含完整生产依赖的package.json和package-lock.json到主机,再通过cPanel配置Node.js应用,此时无需vite参与运行。
    2. SSH手动安装全量依赖:若需在主机上构建,通过SSH连接主机进入项目目录,执行npm install(不要加--production参数)安装所有依赖(含devDependencies),再执行构建命令。

问题2:adapter-node构建后运行出现require is not defined错误

  • 原因:你的package.json设置了"type": "module",但adapter-node默认生成的index.js是CommonJS格式(使用require语法),Node.js会将.js文件当作ES模块处理,引发语法冲突。
  • 解决方法(三选一即可):
    1. 重命名入口文件:将构建生成的index.js改名为index.cjs,同步更新启动命令为node index.cjs(在cPanel的Node.js应用设置中修改,或通过SSH执行该命令)。
    2. 修改package.json模块类型:删除package.json中的"type": "module",或改为"type": "commonjs",让Node.js将.js文件识别为CommonJS模块。
    3. 配置adapter-node生成ES模块:在svelte.config.js中修改adapter-node配置,指定输出格式为ES模块:
      import adapter from '@sveltejs/adapter-node';
      
      export default {
        kit: {
          adapter: adapter({
            format: 'esm'
          })
        }
      };
      
      重新构建后,生成的入口文件会使用import语法,与"type": "module"兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:37:48