繁体   English   中英

在 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 上教程进行了操作,并且能够使用 Babel 正确设置 es6。 然后,我在所有导入中添加了.js文件扩展名,并且它可以工作。

您需要将文件扩展名添加到所有导入和导出语句,然后它可以在没有 Babel 的情况下工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM