目前我在Express中开发了一个应用程序,我创建了几个服务,这些服务是从单个index.js
文件中调用的模块:
"use strict";
const MAX_TEXT_LENGTH = 100;
var mysql = require('mysql')
, _ = require('underscore')
, Q = require('q')
, moment = require('moment')
, env = process.env.NODE_ENV || 'development'
module.exports.module1 = require('./module1');
module.exports.module2 = require('./module2');
module.exports.moduleN = require('./moduleN');
由于这种结构,我现在可以拨打var Services = require('./services')
一次,我可以访问所有服务。
问题是这个文件中使用的模块,常量和“全局”变量在模块中不可用,所以我必须多次调用它们。
我也尝试将变量命名为let
,但这不起作用。
有没有办法在这个index.js
文件中定义模块和变量并在模块中使用它们?
感谢!!!
答案 0 :(得分:1)
在模块中,不是只返回一个简单值,而是返回一个对象,其中每个键都是您要导出的变量。这样的事情。
var myModuule = {
varIWantToExport: 1,
methodIWantToExport: function() { return "Hello world!";}
}
module.exports = myModule;
然后,当你在其他模块中需要它时,你可以这样做:
var myModule = require("./my-module");
var myMethod = myModule.methodIWantToExport
var myVar = myModule.varIWantToExport;
显然这仅适用于您的模块。如果您尝试使用某些未在模块中公开的变量/方法,那么您可能会做错事。