将文件导入我的 Node js 服务器文件时出现错误。 我通常都是这样做的,并且所有路径都是正确的,所以我不确定错误是什么。
import express from 'express'
import mongoose from 'mongoose'
import data from '../data.js'
import Page from "../models/pageModel.js";
const app = express()
mongoose.connect(process.env.MONGODB_URL || 'mongodb://localhost/note-guard', {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
});
app.get('/', (req, res) => {
res.send('Server is ready');
});
app.use('/api/pages/:id', async (req, res) => {
const createdPages = await Page.insertMany(data.pages);
console.log(createdPages);
res.send("test");
})
const port = process.env.PORT || 5002;
app.listen(port, () => {
console.log(`Serve at http://localhost:${port}`);
});
这是我得到的错误:
internal/process/esm_loader.js:74
internalBinding('errors').triggerUncaughtException(
^
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/Users/charlielamb/Desktop/learnCode/note-guard/data.js' imported from /Users/charlielamb/Desktop/learnCode/note-guard/backend/server.js
at finalizeResolution (internal/modules/esm/resolve.js:265:11)
at moduleResolve (internal/modules/esm/resolve.js:699:10)
at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:810:11)
at Loader.resolve (internal/modules/esm/loader.js:88:40)
at Loader.getModuleJob (internal/modules/esm/loader.js:241:28)
at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:56:40)
at link (internal/modules/esm/module_job.js:55:36) {
code: 'ERR_MODULE_NOT_FOUND'
}
有什么帮助吗?
最佳答案
为了能够在 NodeJS 中使用 import
表达式,您应该将以下行添加到 package.json 文件中:"type": "module"
。它位于 "main": "index.js"
之后和 "scripts"
部分之前。
另一方面,您应该使用 const express = require('express')
类型的表达式
此外,您应该拥有正确的项目结构,以便 package.json 能够将所有文件识别为“模块”
right:
root - client
- package.json for client
- server
- package.json for server
wrong:
root - client
- package.json
- server
- package.json
为了帮助您,我制作了一个有关此问题的视频 https://youtu.be/NAq3P_QCcOg
关于javascript - 无法在node/express js中导入模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68237294/