首页 > 解决方案 > 尝试在节点 v14.15.1 中导入本地文件的问题

问题描述

我正在尝试将本地文件从我的项目目录导入到我的 server.js。目录结构是这样的:

server
  node_modules
  server.js (error occurs here) 
  src
    models
    api
       controllers
       routes
         posts.js (trying to import this file, edited to show actual filename)

这是它抛出的错误

internal/process/esm_loader.js:74
internalBinding('errors').triggerUncaughtException(
                          ^

 Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'E:\ReactProjects\memoirs\server\src\api\routes\posts' 
 imported from E:\ReactProjects\memoirs\server\server.js
 Did you mean to import ../src/api/routes/posts.js?
  at finalizeResolution (internal/modules/esm/resolve.js:276: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:85:40)
  at Loader.getModuleJob (internal/modules/esm/loader.js:229:28)
  at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:51:40)
  at link (internal/modules/esm/module_job.js:50:36) {
  code: 'ERR_MODULE_NOT_FOUND'
}
[nodemon] app crashed - waiting for file changes before starting...

和我的 server.js 文件:

import express from 'express';
import posts from './src/api/routes/posts'; // is there a problem with this file path?

const app = express();

app.use('/api/v1/posts', posts); // error seems to be here, server works if commented out

app.listen(3004, (err)=>{
if(err){
    console.log(err);
}
console.log('server at port 3004');
});

问题似乎与文件路径有关。我已经尝试重新安排它,但由于某种奇怪的原因无法将该特定文件加载到 server.js 中是否有任何明确的解释说明为什么会发生这种情况以及如何纠正它?谢谢。

标签: node.jsexpress

解决方案


看来你打错了。你写posts而不是post.

import post from './src/api/routes/post';

编辑:看到这只是问题中的一个错字,您可以尝试修复它:

我会在这个上依赖CommonJS Require而不是ES6 Imports,因为您可以通过以下方式轻松指定相对路径__dirname

let express = require('express');
let posts = require(__dirname + '/src/api/routes/posts.js');

推荐阅读