有没有懂 honojs 的 Nodejs 老哥

发布于 1周前 作者 htzhanglong 来自 nodejs/Nestjs

菜鸡前端,最近写 hono ,pm2 跑不起来,看 log 是正常的,但是启动时写的 console.log 并没有打印出来,api 也访问不了

dev tsx watch src/index.ts


有没有懂 honojs 的 Nodejs 老哥
23 回复

之前是用 bun 学了一点,我感觉跟 bun 挺搭,毕竟你都用了 ts

编译成 js 然后再用 pm2 运行 pm2 不支持运行 ts 看看你的 package.json 应该有相关编译命令

很想帮你,但是很可惜看不到图片。

你这是想用 pm2 部署?
部署前要 build 一下, 用产物部署.
而且 hono 用 node 运行的话需要用一个 adapter
https://github.com/honojs/node-server
如果创建项目的时候选了 node 就不需要.

有可能是 nodejs 版本问题, hono 代码写得有缺陷, 在低版本 node 是跑不起来的.

pm2 指定 interpreter 试试

pm2 start src/index.ts --interpreter “node” --interpreter-args “–import tsx” --env development

https://tsx.is/node/#command-line-api

666 ,确实跑起来了,但是以我的水平有点看不懂这段代码,大佬能不能解释一下

谢谢,不是这个问题,最新的 node

谢谢构建的时候选了 node ,不是这个问题

嗯是的,但是我这个项目有用到一些比较老的依赖,用 bun 有一些看不懂的报错,在官方的 issue 里也看到这个问题,官方还没解决

hono 默认的 nodejs 项目是用 tsx 执行启动的,但是 pm2 是用 node 直接启动的,所以要传递 node 参数指定 tsx, 不用 pm2 的命令就是这样的 node --import=tsx --watch ./src/index.ts

用 hono 的话建议使用 bun 或者 deno

看你这头像,还以为曾博

我也同意#14 老哥的说法,用 deno 这种原生支持的方便很多,bun 在 Windows 上支持没 deno 好,如果有 Windows 的电脑 deno 更合适一些。
我之前就使用过 deno 和 hono 开发了一个简单的服务器,确实很方便,可以尝试一下。

原来我没碰到这个问题是因为启动姿势正确 pm2 start --name xxoo yarn -- start

借楼问下老哥 pm2 如何根据不同的环境变量启动项目?我想指定比如.env.test 这个文件,直接 pm2 start src/index.ts --env test 好像不行?

继续往上面加 console.log ,看最后能打印几个
大概率是没执行到你要打印的那一步

关于honojs与Node.js的结合使用,我可以提供一些专业解答。

Honojs本身并非专为Node.js设计,但借助@hono/node-server适配器,你可以在Node.js环境中运行hono应用程序。以下是一个简单的示例,展示如何在Node.js中使用honojs:

  1. 首先,确保你的Node.js版本在18.x或更高。

  2. 使用npm或yarn安装@hono/node-server:

npm install [@hono](/user/hono)/node-server
# 或者
yarn add [@hono](/user/hono)/node-server
  1. 创建一个简单的Node.js应用,并导入hono和@hono/node-server:
import { serve } from '[@hono](/user/hono)/node-server';
import { hono } from 'hono';

const app = new hono();

app.get('/', (c) => c.text('hono meets node.js'));

serve(app, (info) => {
  console.log(`监听 http://localhost:${info.port}`);
});
  1. 运行你的Node.js应用,并访问http://localhost:3000查看结果。

这个示例展示了如何在Node.js中设置和运行一个基本的hono应用程序。你可以根据需要扩展和自定义这个应用程序。如果你有更具体的问题或需要更详细的帮助,请随时提问。

回到顶部