在 ExpressJS 中导入模块时出错

Error while importing modules in ExpressJS

我试图在 ExpressJS 应用程序中导入一些模块,但它引发了以下错误:

Error: Cannot find module './public/js/date.js'
....more error logs...
at Object. (/home/user007/todoApp_SSRendered/routes/route-add.js:2:23)

我有一些嵌套很深的文件夹,其中的模块分散在各个地方。我的文件夹结构是这样的。我认为这与我如何为模块指定路由有关。

我的app.js导入模块route-main.js位于routes文件夹

const mainRoute = require('./routes/route-main.js')
app.use('/', mainRoute)

另一方面,route-main.js 导入同一路由文件夹中的所有其他模块

const addTask = require('./routes/route-add.js') + .....其他三个剩余文件...
let taskToUpdate = require('./public/db/tasks.json')

再深入一点,routes 文件夹中的所有其他 4 个文件(route-main.js 除外),需要 js 文件夹中的两个文件

const newDateFormat = require('./public/js/date.js')
const writeFile = require('./public/js/writeFile.js')

总的来说,模块依赖性 link(要求)类似于:

app.js --> main.js --> (route-add , route-delete...) --> (date, writeFile)

注意:在app.js中,我只需要main.js 等等(对同一个模块没有双重要求)。我正在使用 Express 4.14.1 并将 Pug 和 body-parser 作为剩余的依赖项。
如果有帮助,该应用程序也完全在服务器端呈现。

谢谢你:)

这是一个相对路径问题,由于route-main.js/public不在同一个文件夹中,需要替换为:

let taskToUpdate = require('./public/db/tasks.json')

let taskToUpdate = require('../public/db/tasks.json')

并检查当您需要其他文件夹中的文件时,相对路径是否正确。