【问题标题】:Error while importing modules in ExpressJS在 ExpressJS 中导入模块时出错
【发布时间】:2017-02-26 20:05:22
【问题描述】:

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

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

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

我的 app.js 导入位于 routes 文件夹中的模块 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')

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

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

所以总的来说,模块依赖链接(require)是这样的:

app.js --> ma​​in.js --> (route-add, route-delete...) -- > (日期,写入文件)

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

谢谢 :)

【问题讨论】:

    标签: javascript express routing node-modules


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 哦,好的。因此,如果我需要来自外部 1 级不同文件夹的任何内容,我需要使用 ../fullPathName 对吗?我还在某处看到,当您从同一个文件夹导入模块时,您只需执行 /moduleName。我对使用 / 的路由路径感到很困惑。感谢您的回复:)
    • 是的,./ 来自同一个文件夹,../ 用于外部 1 级。如果您正在使用 webpack 并且想避免这种情况,则解析功能可以帮助您:webpack.js.org/configuration/resolve
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 2015-05-03
    • 2010-11-25
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多