javascript - 无法在node/express js中导入模块

标签 javascript node.js mongodb express

将文件导入我的 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

enter image description here

关于javascript - 无法在node/express js中导入模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68237294/

相关文章:

javascript - 对 HTML 进行编码并将其从 PHP 传递到 Javascript

sql - 获取刚刚添加的行的最佳方式。 Heroku + Node + Postgres

MongoDB 将两个字段中的字符串连接到第三个字段中

java - 如何配置嵌入式 MongoDB 并进行身份验证以在 Spring Boot 集成测试中使用?

javascript - 服务页面,AngularJS 与 Node JS

javascript - 处理多个 youtube 视频

javascript - 访问父 iframe 元素的容器(iframe inside iframe)

javascript - Express JS 无法识别环境

node.js - 大多数准系统 MongoDB Express.js 应用程序

mongodb - 如何在 MongoDB 更新中将字段的值推送到同一文档的另一个数组字段中