尝试从Node.js中的另一个模块使用exports.create

我想使用另一个模块中的一个模块的代码。

Module1Directory具有以下文件:

Module1.js

exports.create = function(req, res) { function something(){} } 

Index.js:

 'use strict'; var express = require('express'); var controller = require('./Module1.js'); var router = express.Router(); router.post('/', controller.create); module.exports = router; 

Module2Directory具有以下文件:

Module2.js

 var confusing = require('../Module1Directory/Module1.js'); exports.create = function(req, res){ confusing.create.something(); } 

Index.js:

 'use strict'; var express = require('express'); var controller = require('./Module2.js'); var router = express.Router(); router.post('/', controller.create); module.exports = router; 

在Module2中运行的函数在terminal中返回'undefined不是函数' 。 怎么了?

你的create是一个函数 ,但是你将它视为一个非函数对象。 你必须调用它,它将不得不返回一个具有something属性的对象:

Module1.js

 exports.create = function(req, res) { function something(){} return {something: something}; // <=== }; 

Module2.js

 var confusing = require('../Module1Directory/Module1.js'); exports.create = function(req, res){ confusing.create(req, res).something(); // ^^^^^^^^^^ };