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

Express项目执行node app.js后控制台未显示Server Start提示

控制台未显示"Server Start: 3001"的排查与解决

执行node app.js后,控制台未输出预期的"Server Start: 3001"提示,结合你提供的代码,问题主要出在以下几个地方:

一、动态加载控制器的路径错误

在app.js的动态加载控制器代码中,路径拼接缺少了斜杠,导致Node.js无法找到控制器文件,抛出错误后终止代码执行,后续的server.listen和console.log都不会运行:

原错误代码:

fs.readdirSync('./controllers').forEach((file) => {
  if(file.substr(-3) == ".js") {
    route = require('./controllers' + file); // 此处缺少斜杠
    route.controller(app, io, user_socket_connect_list);
  }
})

修复后:

fs.readdirSync('./controllers').forEach((file) => {
  if(file.substr(-3) == ".js") {
    route = require('./controllers/' + file); // 添加斜杠,路径变为 ./controllers/xxx.js
    route.controller(app, io, user_socket_connect_list);
  }
})

二、原型方法使用箭头函数的潜在问题

你给Array和String原型添加方法时用了箭头函数,箭头函数的this指向不会绑定到当前数组/字符串实例,会导致这些方法无法正常工作,虽然这不是直接导致控制台不输出的原因,但会引发其他潜在bug,需要改成普通函数:

例如:
原错误写法:

Array.prototype.swap = (x,y) => {
  var b = this[x];
  this[x] = this[y];
  this[y] = b;
  return this;
}

修复后:

Array.prototype.swap = function(x,y) {
  var b = this[x];
  this[x] = this[y];
  this[y] = b;
  return this;
}

同理,insert、replace_null、replaceAll这几个原型方法都需要改成普通函数形式。

三、验证步骤

  1. 修复上述两个问题后,保存app.js
  2. 在终端重新执行node app.js
  3. 如果仍无输出,查看终端的错误提示(Node.js会把报错信息打印在终端,根据提示进一步排查)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:13:17