node.js - ExpressJs 模块未定义。无法读取未定义的属性“路由器”
问题描述
感谢您花时间看我的问题。我将首先提供所有必需的信息,尽我所能描述。
这是我的目录结构。
注意: ( ) 星号代表一个文件。(-) 连字符表示目录。*
* 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 文件的代码如下,
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 通过显示悬停弹出窗口向我显示所需模块的列表。但是当我在路由/根文件中执行相同操作时,它会向我显示“const modules:any”悬停弹出窗口。更准确地说,这个“const modules:any”仅在我添加“const router = express.Router();”后出现
解决方案
推荐阅读
- amazon-web-services - 容器应用程序无法从 Web 浏览器连接
- javascript - 为什么 Node.js 中的一些 TCP 套接字比大多数其他套接字需要更多的时间来连接?
- android - WARN 可能未处理的 Promise Rejection (id: 4): BleError- react-native
- json - 如何编码网络调用,以便我只返回不为零或空白的字段
- sql - 如何在 Redshift 上做一个文本掩码
- sql - 如何分组并选择最大日期?
- python - Pandas 查找索引值
- vue.js - 应用程序已安装。再次打开页面时没有显示
- php - HTML 页面链接 N
- c# - .NET Worker 服务 Linux 守护进程单例