在 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
文件扩展名,它起作用了。
在 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
文件扩展名,它起作用了。