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

Render.com部署Node.js后端遇node:fs模块缺失错误,求解决方案

Node.js后端部署Render.com时出现node:fs模块找不到的问题

问题背景

部署基于React的Web应用,先部署Node.js+MongoDB后端,前端用JavaScript开发。在Render.com设置构建命令npm install、运行命令npm start,部署时报错,提示找不到node:fs模块,调用栈指向openai依赖。

错误日志

Sep 28 03:47:04 PM  internal/modules/cjs/loader.js:888
Sep 28 03:47:04 PM    throw err;
Sep 28 03:47:04 PM    ^
Sep 28 03:47:04 PM  
Sep 28 03:47:04 PM  Error: Cannot find module 'node:fs'
Sep 28 03:47:04 PM  Require stack:
Sep 28 03:47:04 PM  - /opt/render/project/src/Tuba-Backend/node_modules/openai/_shims/node-runtime.js
Sep 28 03:47:04 PM  - /opt/render/project/src/Tuba-Backend/node_modules/openai/_shims/auto/runtime-node.js
Sep 28 03:47:04 PM  - /opt/render/project/src/Tuba-Backend/node_modules/openai/_shims/index.js
Sep 28 03:47:04 PM  - /opt/render/project/src/Tuba-Backend/node_modules/openai/core.js
Sep 28 03:47:04 PM  - /opt/render/project/src/Tuba-Backend/node_modules/openai/index.js
Sep 28 03:47:04 PM  - /opt/render/project/src/Tuba-Backend/routes/posts.js
Sep 28 03:47:04 PM  - /opt/render/project/src/Tuba-Backend/server.js
Sep 28 03:47:04 PM      at Function.Module._resolveFilename (internal/modules/cjs/loader.js:885:15)
Sep 28 03:47:04 PM      at Function.Module._load (internal/modules/cjs/loader.js:730:27)
Sep 28 03:47:04 PM      at Module.require (internal/modules/cjs/loader.js:957:19)
Sep 28 03:47:04 PM      at require (internal/modules/cjs/helpers.js:88:18)
Sep 28 03:47:04 PM      at Object.<anonymous> (/opt/render/project/src/Tuba-Backend/node_modules/openai/_shims/node-runtime.js:37:19)
Sep 28 03:47:04 PM      at Module._compile (internal/modules/cjs/loader.js:1068:30)
Sep 28 03:47:04 PM      at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
Sep 28 03:47:04 PM      at Module.load (internal/modules/cjs/loader.js:933:32)
Sep 28 03:47:04 PM      at Function.Module._load (internal/modules/cjs/loader.js:774:14)
Sep 28 03:47:04 PM      at Module.require (internal/modules/cjs/loader.js:957:19) {
Sep 28 03:47:04 PM    code: 'MODULE_NOT_FOUND',
Sep 28 03:47:04 PM    requireStack: [
Sep 28 03:47:04 PM      '/opt/render/project/src/Tuba-Backend/node_modules/openai/_shims/node-runtime.js',
Sep 28 03:47:04 PM      '/opt/render/project/src/Tuba-Backend/node_modules/openai/_shims/auto/runtime-node.js',
Sep 28 03:47:04 PM      '/opt/render/project/src/Tuba-Backend/node_modules/openai/_shims/index.js',
Sep 28 03:47:04 PM      '/opt/render/project/src/Tuba-Backend/node_modules/openai/core.js',
Sep 28 03:47:04 PM      '/opt/render/project/src/Tuba-Backend/node_modules/openai/index.js',
Sep 28 03:47:04 PM      '/opt/render/project/src/Tuba-Backend/routes/posts.js',
Sep 28 03:47:04 PM      '/opt/render/project/src/Tuba-Backend/server.js'
Sep 28 03:47:04 PM    ]
Sep 28 03:47:04 PM  }

后端package.json

{
  "name": "server.js",
  "version": "1.0.0",
  "main": "server.js",
  "scripts": {
    "dev": "nodemon server.js",
    "start": "nodemon server.js",
    "build": "npm i"
  },
  "author": "",
  "license": "ISC",
  "description": "",
  "dependencies": {
    "all": "^0.0.0",
    "bcrypt": "^5.1.0",
    "express": "^4.18.2",
    "helmet": "^7.0.0",
    "mongoose": "^7.2.4",
    "multer": "^1.4.5-lts.1",
    "nodemailer": "^6.9.4",
    "nodemon": "^2.0.22",
    "openai": "^4.10.0"
  }
}

server.js代码

const express = require("express");
const fs = require('fs');
const app = express();
const postRoute = require("./routes/posts")
const authRoute = require("./routes/auth")
const userRoute = require("./routes/users")
const teamRoute = require("./routes/team")
const AIRoute = require("./routes/AI")
const uploadRoute = require("./routes/upload")
const otpRoute = require("./routes/otp")
const path = require("path")
const PORT = 5000;
const mongoose = require("mongoose");
// import dotenv file to protect my password from third party
require("dotenv").config();
// connecting to database
// protecting password from being revealed to third party
mongoose.connect(process.env.MONGOURL)
    .then(()=>{console.log("connected");})
    .catch((err)=>{console.log(err);})
// identify whether it is connected if it is connected it will return "connected"
// if not then it will return error

// midle-ware set up
app.use("/images", express.static(path.join(__dirname,"public/images")))
app.use(express.json())
app.use("/api/users", userRoute);
app.use("/api/auth", authRoute);
app.use("/api/posts", postRoute);
app.use("/api/team", teamRoute);
app.use("/api/AI", AIRoute);
app.use("/api/upload", uploadRoute);
app.use("/api/otp", otpRoute);

// app.get("/", (req,res) => {
//     res.send(" can u hear me? ")
// })
app.listen(PORT, ()=> console.log("server is activated"));

错误原因分析

  1. Node.js版本不兼容:node:fs这种带node:前缀的模块导入方式是Node.js 16.0.0及以上版本才支持的特性。从错误日志里的internal/modules/cjs/loader.js版本来看,Render.com当前使用的Node.js版本低于16.0.0,无法识别这种导入语法。
  2. openai依赖要求:使用的openai@4.10.0版本内部使用了node:fs这类新语法,对Node.js版本有最低要求(通常是16.x及以上)。

解决办法

方法1:指定Render.com使用的Node.js版本

在后端项目根目录创建.nvmrc文件,写入需要的Node.js版本号(比如18或20):

18

或者直接在package.json中添加engines字段:

{
  "engines": {
    "node": ">=16.0.0"
  }
}

Render.com会自动读取这个配置,使用对应版本的Node.js运行项目。

方法2:降低openai版本到兼容旧Node.js的版本

如果不想升级Node.js,可以将openai版本降级到v3.x系列,v3版本不使用node:前缀的模块导入语法,兼容更低版本的Node.js。修改package.json中的依赖:

"openai": "^3.3.0"

然后重新运行npm install,提交修改后重新部署。

方法3:修正启动命令(可选)

start命令使用nodemon是开发环境工具,生产环境建议直接用node server.js,避免不必要的依赖问题:

"scripts": {
  "dev": "nodemon server.js",
  "start": "node server.js",
  "build": "npm install"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 15:34:50