在ExpressJS中导入模块时出错

时间:2017-02-26 20:05:22

标签: javascript express routing node-modules

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

  

错误:找不到模块'./public/js/date.js'   .... 更多错误日志 ...
  在对象。 (/home/user007/todoApp_SSRendered/routes/route-add.js:2:23)

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

enter image description here

我的 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作为剩余的依赖项 如果它有帮助,该应用程序也是完全服务器端呈现的。

谢谢你:)

1 个答案:

答案 0 :(得分:1)

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

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

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

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