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

使用JeringTech/Javascript.NodeJS从C#调用Node.js遇服务异常及连接拒绝问题

问题排查与解决方法

针对你使用JeringTech/Javascript.NodeJS库时遇到的连接被拒绝及ServiceUnavailable错误,以下是具体排查和修复步骤:

1. 指定Node.js可执行文件路径

如果Node.js未加入系统环境变量PATH,库可能无法找到Node进程。显式指定路径:

var nodeJSServiceOptions = new NodeJSServiceOptions
{
    NodeJSProcessOptions = new NodeJSProcessOptions
    {
        NodeAndV8Options = new NodeAndV8Options
        {
            NodeExecutablePath = @"C:\Program Files\nodejs\node.exe" // 替换为你的Node实际安装路径
        }
    }
};

var nodeJSService = new HttpNodeJSService(nodeJSServiceOptions);
int result = await nodeJSService.InvokeFromStringAsync<int>(javascriptModule, args: new object[] { 3, 5 });

2. 更换未被占用的端口

错误中提到的10809端口可能被其他程序占用,手动指定空闲端口:

var nodeJSServiceOptions = new NodeJSServiceOptions
{
    HttpNodeJSServiceOptions = new HttpNodeJSServiceOptions
    {
        Port = 30000 // 选择一个未被占用的端口
    }
};

3. 简化JavaScript代码验证

将回调风格的JS代码改为直接返回值(库兼容同步返回和Promise),排除回调逻辑潜在问题:

module.exports = (x, y) => {
    return x + y;
};

调用代码保持不变,测试是否能正常执行。

4. 验证Node.js版本兼容性

你的Node.js 16.14.1属于兼容版本,但可尝试升级至最新LTS版本(如18.x),排除版本适配问题。

5. 启用日志排查进程启动问题

添加日志输出,查看Node进程启动时的错误信息:

var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
var nodeJSService = new HttpNodeJSService(new NodeJSServiceOptions(), loggerFactory.CreateLogger<HttpNodeJSService>());

运行项目后查看控制台日志,定位Node进程启动失败的具体原因(如权限不足、依赖缺失)。

6. 确保运行权限足够

  • Windows系统:以管理员身份启动你的C#项目
  • Linux/macOS:确保当前用户有Node.js可执行文件及项目文件的读写执行权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 02:14:51