Nodemon无报错退出等待重启及Express静态资源服务启动失败求助
解决Express静态资源托管时nodemon提示"clean exit"的问题
ES模块未正确配置
你的代码使用了ES模块的import语法,但Node.js默认以CommonJS模式运行,会触发语法错误导致服务直接退出,进而出现nodemon的clean exit提示。
解决:在项目根目录的package.json中添加配置:{ "type": "module" }ES模块中无法直接使用
__dirname
ES模块环境下没有__dirname全局变量,直接调用会抛出ReferenceError,导致服务启动失败。
解决:通过import.meta.url手动获取当前文件的目录路径:import { fileURLToPath } from "url"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename);PORT变量赋值顺序错误
你的代码写为const PORT = 3000 || process.env.PORT,由于3000是真值,永远不会读取环境变量中的端口配置,虽不直接导致服务退出,但属于逻辑问题,建议修正:const PORT = process.env.PORT || 3000;
修正后的完整代码
import express from "express"; import path from "path"; import { fileURLToPath } from "url"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const app = express(); app.use(express.static(path.join(__dirname))); const PORT = process.env.PORT || 3000; app.listen(PORT, () => console.log(`server listening on port ${PORT}`));
内容的提问来源于stack exchange,提问作者Hilary
相关产品推荐
相关产品推荐

