尝试从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(); // ^^^^^^^^^^ };