我正在尝试在ExpressJS应用程序中导入一些模块,但它会引发以下错误:
错误:找不到模块'./public/js/date.js' .... 更多错误日志 ...
在对象。 (/home/user007/todoApp_SSRendered/routes/route-add.js:2:23)
我有一些深层嵌套的文件夹,模块都散落在各个地方。我的文件夹结构是这样的。我认为这与我如何为模块指定路由有关。
我的 app.js 导入位于路径文件夹
中的模块 route-main.js 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')
更深层次,路径文件夹中的所有其他4个文件(route-main.js除外)需要js文件夹中的两个文件
const newDateFormat = require('./public/js/date.js')
const writeFile = require('./public/js/writeFile.js')
总的来说,模块依赖关系链接(require)类似于:
app.js - > main.js - > (路线添加,路线删除...) - > (date,writeFile)
注意:在 app.js 中,我只需要 main.js 等等其他内容(没有双重需求)相同的模块)。我正在使用Express 4.14.1并将Pug和body-parser作为剩余的依赖项 如果它有帮助,该应用程序也是完全服务器端呈现的。
谢谢你:)
答案 0 :(得分:1)
这是一个相对路径问题,因为route-main.js
和/public
不在同一个文件夹中,您需要替换:
let taskToUpdate = require('./public/db/tasks.json')
带
let taskToUpdate = require('../public/db/tasks.json')
当您需要来自其他文件夹的文件时,检查相对路径是否正确。