无法从节点js模块导出变量

时间:2018-08-15 14:20:13

标签: javascript node.js express

首先,我已经检查了有关堆栈溢出的所有问题。

我正在尝试将变量str的值在函数内部更新到另一个模块,但是将其导出到另一个文件后却显示undefined

但是,如果我在函数外部更新变量的值,则导出工作正常。

我在Excel.js文件中有一个带有代码的函数

var str='abc';
wb.xlsx.readFile(filePath).then(function()

{

    var sh = wb.getWorksheet("Sheet1");

    console.log("YOUR LECTURE IS",sh.getRow(goingSlot+1).getCell(DAY+1).value);
 //console works fine
   str="YOUR LECTURE IS"+sh.getRow(goingSlot+1).getCell(DAY+1).value;
        //the assignment here leads to undefined after exporting
    }

str="something";
//this successfully exports the value as something 

然后使用语法将其导出到我的主文件中

exports.str=str; 

如果您需要查看主文件的代码

主文件的代码为

const express=require('express');
const app=express();
const myle=require('./readingExcel.js');
const res=myle.name;
console.log(res); 
//CONSOLE SHOWS UNDEFINED

2 个答案:

答案 0 :(得分:1)

exports.strstr不是相同的变量,即使您写exports.str = str

var a = 2;
var b = a;

a = 4;

console.log(b) // b is still 2 and not 4

因此,请直接使用exports.str而不是str

exports.str = 'abc'
// ...
exports.str="YOUR LECTURE IS"+sh.getRow(goingSlot+1).getCell(DAY+1).value;
// ...
exports.str = 'something'

答案 1 :(得分:0)

我只想在@ t.niese的回复中添加一些内容(我认为这很可靠)。

检查您的代码中是否有任何模式。exports.str分配后发生任何导出。出口和module.exports通常指向同一位置,但我总是使用module.exports。使用导出有被其他地方覆盖的风险(module.exports也是如此,但这是节点使用的实际引用)。

https://medium.freecodecamp.org/node-js-module-exports-vs-exports-ec7e254d63ac