ExpressJs模块未定义。无法读取未定义的属性“路由器”

时间:2019-03-14 23:57:19

标签: node.js node-modules

谢谢您抽出宝贵的时间查看我的问题。首先,我将尽一切可能提供所有必要的信息。

这是我的目录结构。

注意:()星号表示文件。 (-)连字符代表目录。*

* app.js
- config
    * modules.js
    * functions.js
    * info.js
- routes
    * root.js

有关文件功能的说明。

config / modules.js通过以下方式列出了所需的模块列表。

module.exports = {
    express: require( 'express' ),
    bodyParser: require( 'bodyParser' ),
    someModule: require( 'someModule' ),
    .
    .
    . *the list goes on*
}

config / functions.js仅有一些函数,如getCurrentTime等,并且运行良好,因此可以忽略;也与该问题无关。

config / info.js具有一些应用程序常量,例如端口,dbURL等。

module.exports.app = {
    port: 3000,
    db: "mongodb://localhost/dev-db-something"
}

当我在app.js文件中需要config / modules文件时,可以完美地使用变量,并且没有问题。但是,当我在routes / root文件中需要相同的配置/模块时,它给我一个错误,即无法读取未定义的属性“ Router”。

routes / root文件的代码如下,

const modules = require( '../config/modules' );
const express = modules.express;
const router  = express.Router();

    router.get( '/', (req, res) => { 
        res.send( 'Welcome!' );
    } );

module.exports = router;

我正在为此使用VS Code。当我将鼠标悬停在“模块”上时。在app.js文件中,VS Code通过显示一个悬停弹出窗口向我显示了所需模块的列表。但是,当我在route / root文件中执行相同操作时,它显示了 “ const模块:任何” 悬停弹出窗口。为了更准确地说明问题,此 “ const modules:any” 仅在我添加 “ const router = express.Router()后出现;“

0 个答案:

没有答案