在 Node.js 中找不到本地模块

Local Module Not Found in Node.js

在 Node.js 中,我创建了自己的自定义模块 apiEndpoints.js。但是,当我尝试访问它时,我收到 Node.js 无法找到模块的错误。下面是我的 Server.js 代码:

import express from "express";
import mongoose from "mongoose";
import Cors from "cors";
import apiEndpoints from "./routes/apiEndpoints";

// Initialization
const app = express();
const port = process.env.port || 80;
const connection_url =
  "mongodb+srv://admin:EUl8KIA9dLv7qXKa@cluster0.mblf7.mongodb.net/appDB?retryWrites=true&w=majority";

// Middleware
app.use(express.json());
app.use(Cors());

// DB Config
mongoose.connect(connection_url);

// API Endpoints
app.use(apiEndpoints);

app.listen(port, () => {
  console.log(`Listening on localhost: ${port}`);
});

下面是我的 apiEndpoints.js 代码:

import express from "express";
import Users from "../models/users";

const router = express.Router();

router.get("/users", (req, res) => {
  Users.find((err, data) => {
    if (err) {
      res.status(500).send(err);
    } else {
      res.status(200).send(data);
    }
  });
});

router.get("/user/:username", (req, res) => {
  const username = req.params.username;

  Users.findOne({ username: username }, (err, data) => {
    if (err) {
      res.status(500).send(err);
    } else {
      res.status(200).send(data);
    }
  });
});

router.post("/user/create", (req, res) => {
  const user = req.body;

  Users.create(user, (err, data) => {
    if (err) {
      res.status(500).send(err);
    } else {
      res.status(201).send(data);
    }
  });
});

router.put("/user/:username", (req, res) => {
  const username = req.params.username;
  const updatedData = req.body;

  Users.findOneAndUpdate(
    { username: username },
    updatedData,
    { new: true },
    (err, data) => {
      if (err) {
        res.status(500).send(err);
      } else {
        res.status(200).send(data);
      }
    }
  );
});

router.delete("/user/delete/:username", (req, res) => {
  const username = req.params.username;

  Users.findOneAndDelete({ username: username }, (err, data) => {
    if (err) {
      res.status(500).send(err);
    } else {
      res.status(200).send(data);
    }
  });
});

export default router;

而且,这是我的文件夹结构:

此外,下面是我的 package.json 文件:

{
  "name": "api",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "type": "module",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node server.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "mongoose": "^6.0.4"
  }
}

所以我的问题是为什么当 Server.js 尝试访问 apiEndpoints.js 时它说“找不到模块”?

好的,经过几个小时的努力,我终于解决了我的问题。所以我的问题是我没有为 Node.js 正确设置 es6。因此,我遵循了 Medium 上的 this 教程,并且能够使用 Babel 正确设置 es6。然后,我在我的所有导入中添加了 .js 文件扩展名,它起作用了。