首页 > 解决方案 > 无法使用 node.js 中的应用程序从扩展模块调用基本模块

问题描述

您好我正在尝试使用中间的扩展模块从应用程序文件中调用基本模块。

基本模块:Basemodule.js

var exports = module.exports = {};
exports.baseModmessage1=function()
{
console.log('Module1:base Module: Message 1')
}
exports.baseModmessage2=function()
{
console.log('Module1:base module: Message 2')    
}

扩展模块:Extendedmodule.js

var baseModule = require ('./Basemodule.js');

exports.extendedModule = function()
{
    console.log ("This came from extended module function");

    function moreMessage()
    {
        var baseMessage = baseModule
        baseMessage.baseModmessage1();
    }
}

应用程序:app.js

var mainCall = require('./Extendedmodule.js');

mainCall.extendedModule();

mainCall.extendedModule.moreMessage();

所有文件都在同一个本地文件夹中。我能够获得扩展模块消息,但调用基本模块时似乎有问题。

C:\wks\guru99\L2_extendingmodules>node app.js

This came from extended module function

C:\wks\guru99\L2_extendingmodules\app.js:5
mainCall.extendedModule.moreMessage();
                        ^

TypeError: mainCall.extendedModule.moreMessage is not a function
    at Object.<anonymous> (C:\wks\guru99\L2_extendingmodules\app.js:5:25)
    at Module._compile (internal/modules/cjs/loader.js:1138:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
    at Module.load (internal/modules/cjs/loader.js:986:32)
    at Function.Module._load (internal/modules/cjs/loader.js:879:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47

标签: javascriptnode.jsnode-modules

解决方案


moreMessageextendedModule在;的主体内声明 它不是extendedModule正在导出的函数的属性,因此无法以您尝试的方式访问。

直接导出moreMessage,或者在函数体之外定义它,extendedModule然后将其附加到extendedModule

extendedModule.moreMessage = function () { /* ... */ };


推荐阅读