簡體   English   中英

無法在 node/express js 中導入模塊

[英]Can't import module in node/express js

將文件導入我的節點 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的視頻

在此處輸入圖片說明

server.jsdata.jsmodels在同一路徑中。 修復導入路徑:

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}`);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM