我正在尝试在 Plesk 上部署一个 Nuxt 3 网站,使用纱线构建进行编译。因此,我拥有 Plesk 托管上的 PUBLIC 和 SERVER 文件夹。
我有 server.js 文件,如下:
`const app = require('./.output/server/index.mjs'); const http = require('http');
http.createServer(app).listen(process.env.PORT);`
我找不到 Nuxt 3 的单个指南,我需要启动该应用程序。但根据我的理解,Phusion 应该在不启动手动启动命令的情况下启动进程?
非常感谢
我解决了我的问题,而且比我预想的要容易得多:你需要做的只是创建一个 server.js 文件,其中包含 1 行:
import('./server/index.mjs');
这是nuxt3在./output/server/index.mjs中生成的文件。
仅此而已。我确实把来自 nuxt2 的事情搞得太复杂了,我希望它可以为其他人节省时间。
我想接受的答案很好,但不幸的是这不是我的解决方案。我有一个 Plesk Obsidian,并以 Phusion Passenger 作为 OP。不幸的是,我无法访问日志,询问提供商是一件很痛苦的事情。
我的 Plesk Nodejs 配置如下:
我的应用程序在子域中运行
abc.my-url.de
所以我的
Document Root
是abc.my-url.de/.output/public
Aplication Url
是http://abc.my-url.de
Application Root
是abc.my-url.de
.output
目录是用yarn build
生成的
我第一次建议您将
Application Mode
设置为 development
,因为否则 Phusion Passenger 不会告诉您错误。
这就是使应用程序在我的案例中运行的原因:
我必须用内容创建一个
app.cjs
(名称并不重要,但结局很重要):
// !!! the ./ at the beginning is extremely important !!!
import('./.output/server/index.mjs');
我的
Application Startup File
是 app.cjs
并放置在子域的根目录中,同时还生成 .output
文件夹。
如果您的应用程序正在运行,请不要忘记将
Application Mode
更改为 production
。
我不清楚为什么我必须使用
cjs
文件,因为我不知道提供商的nodejs设置,而他将其保密。
我必须将
./
添加到 app.cjs 内的导入路径的原因是(提供商告诉我的),因为 Phusion Passenger 将应用程序复制到沙盒文件夹中,然后在其中运行。这并不能很好地解释它,但这就是我所得到的。