如何在全局范围内定义nodejs中的const?

时间:2013-11-27 10:27:27

标签: node.js

我想将我的应用程序分离到部分以获得类似MVC的内容...目前我认为exports工作以及如何在不同文件之间进行通信。我无法理解的一件事是如何在全局范围内使用常量?目前我有这样的事情:

// start.js

const ROOT_DIR = __dirname;
const APP_DIR = ROOT_DIR + '/app/';
const MODULES_DIR = '/usr/local/lib/node_modules/';
const APP_PORT = 4935;

var server = require(APP_DIR + 'server.js');

server.start();

// server.js

exports.start = function() {
    var express = require(MODULES_DIR + 'express'),
        app = express(),
        http = require('http'),
        server = http.createServer(app),
        io = require(MODULES_DIR + 'socket.io').listen(server),
        fs = require('fs'),
        path = require('path');

    server.listen(APP_PORT);

    app.use(express.static(ROOT_DIR + '/assets'));

    app.get('/', function (req, res) {
        res.sendfile(ROOT_DIR + '/views/index.html');
    });
}

是否可以自动将此常量分配给server.js或者我需要将它们作为变量传递?

4 个答案:

答案 0 :(得分:15)

我认为,您需要使用常量创建文件,并在开始其他模块时将其用作需要文件。

文件consts.js

exports.CONST_1 = 42,
exports.CONST_2 = 123;

在必要的模块中:

var consts = require('path_to_consts.js');
var my_var = consts.CONST_1 + consts.CONST_2;

所以所有全局变量都在一个地方

答案 1 :(得分:1)

Object.defineProperty(global, 'MY_CONST', { value : 123 })

P.S。请不要这样做

答案 2 :(得分:1)

这个方法与@ user3040347建议的方法相同,但差别不大。

在这里,您需要使用常量创建文件,并在要使用的模块的开头使用他作为require文件。

文件consts.js

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>transport</artifactId>
    <version>5.0.1</version>
</dependency>

在必要的模块中:

CONST_1 = 42,
CONST_2 = 123;
module.exports = {};

答案 3 :(得分:0)

Javascript常量不能在Node.js中的文件中全局工作。您需要将它们传递给函数。

    // start.js

    const ROOT_DIR = __dirname;
    const APP_DIR = ROOT_DIR + '/app/';
    const MODULES_DIR = '/usr/local/lib/node_modules/';
    const APP_PORT = 4935;

    var server = require(APP_DIR + 'server.js');

    server.start(MODULES_DIR,APP_PORT,ROOT_DIR);

    // server.js

    exports.start = function(MODULES_DIR,APP_PORT,ROOT_DIR) {
        var express = require(MODULES_DIR + 'express'),
            app = express(),
            http = require('http'),
            server = http.createServer(app),
            io = require(MODULES_DIR + 'socket.io').listen(server),
            fs = require('fs'),
            path = require('path');

        server.listen(APP_PORT);

        app.use(express.static(ROOT_DIR + '/assets'));

        app.get('/', function (req, res) {
            res.sendfile(ROOT_DIR + '/views/index.html');
        });
    }