2016-07-16 22 views
2

我已經完成了一些搜索,看看這是否可能。到目前爲止,從我的理解來看,事實並非如此。是否有可能在Node.js中'需要'一個可以訪問導入文件全局作用域的對象?

在我main.js文件,我有這樣的代碼:

var commands = require('./commands.js'); 

它導入對象從commands.js,即載於以下方式:

module.exports = { 
    var1: "something" + somevar, 
    var2: "something" + someothervar, 
    ... 
} 

這讓我訪問對象commands來自main.js文件,就好像它只是在main.js本身內聲明的那樣。但是,當我想要導出commands.js文件能夠訪問main.js的全局變量作用域時遇到問題。說somevarsomeothervarmain.js的全球範圍的一部分,當我想從commands得到一個值我不希望他們是'未定義'。長話短說,我想對待這個導入的對象,正好是,好像它剛剛在main.js中聲明一樣。

我試圖爲Discord編寫一個聊天機器人,並且爲了整潔和組織,我希望將它可以使用的函數列表從處理它們的代碼中分離出來。這值得努力嗎?有一個更好的方法嗎?我現在還在圍繞SQL來試圖設計最模塊化/可定製的程序。

回答

0

這是不可能的,當你導出一個模塊時,所有的變量都將被解析。

你將永遠與當您導入評估了所有表達式獲取對象

我建議化妝VAR1和VAR2爲功能

module.exports = { 
    var1: function(someVar){ return "something" + someVar}, 
    var2: function(someothervar) {return "something" + someothervar}, 
    ... 
} 

Now when you import it in main.js ,pass your somevar and someothervar 
+0

我希望我不得不做出'module.exports 'object元素所有字符串,然後在處理它們時使用.eval(),也許。 – MrSp33dy123

+0

你可以使用不同的路線 –

+0

你的建議是一個好主意,我實際上正在考慮看一看,但由於某種原因忘記了。感謝你的回答。 – MrSp33dy123

相關問題