Javascript module.export和node.js。I';我对4行代码心不在焉,我不';我根本不理解这个问题

Javascript module.export和node.js。I';我对4行代码心不在焉,我不';我根本不理解这个问题,javascript,node.js,Javascript,Node.js,我目前正在学习使用udemy的node.js,我有一个我完全不理解的问题,因为它不应该发生 因此,本课程是关于使用node.js和module.exports访问外部文件的。我完全按照视频进行操作,但它不起作用 下面是app.js的代码 require('./utils.js') console.log(name); 下面是utils.js const name = 'test' ; module.exports = name; 非常简单,对吧?但它不起作用。我会得到这个错误: iMac

我目前正在学习使用udemy的node.js,我有一个我完全不理解的问题,因为它不应该发生

因此,本课程是关于使用node.js和module.exports访问外部文件的。我完全按照视频进行操作,但它不起作用

下面是app.js的代码

require('./utils.js')

console.log(name);
下面是utils.js

const name = 'test' ;

module.exports = name;
非常简单,对吧?但它不起作用。我会得到这个错误:

iMac-de-user:notes-app user$ node app.js
utils.js
/Users/user/Desktop/notes-app/app.js:3
console.log(name)
            ^
 
ReferenceError: name is not defined
    at Object.<anonymous> (/Users/user/Desktop/notes-app/app.js:3:13)
    at Module._compile (internal/modules/cjs/loader.js:1137:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
    at Module.load (internal/modules/cjs/loader.js:985:32)
    at Function.Module._load (internal/modules/cjs/loader.js:878:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47
iMac-de-user:notes-app user$ 
我试过了,它成功了。所以一开始我想也许它可以访问函数而不是变量?这很奇怪,因为教练这么做了,但这是唯一的解释。所以我保留了它并删除了这个函数,只添加了一个console.log

    const getNotes = console.log('test');
    
    module.exports = getNotes
成功了。当时我很奇怪,因为这几乎是我的第一个代码。因此,我尝试再次将名称更改为name(当然,我也在app.js中的console.log()中进行了更改),但没有成功。我查了一下是否是保留关键字?不。我试过测试名称1 nameName。除了getNotes,什么都不起作用(每次我都会在app.js和utils.js中更改名称,所以总共更改了3个常量名称。)

我不明白,就我所知,这是不可能的,也没有任何意义

发生什么事了?我的电脑闹鬼了吗?这可能是非常愚蠢的事情,但我无法理解。我知道这可能有点混乱,所以我包括了2张图片

谢谢你抽出时间


执行如下操作您必须在
要求后将导出的对象或变量存储在新变量中。请确保在
要求
语句中给出正确的路径

const name=require('./utils.js')
console.log(name);
输出它

const name = 'test' ;

module.exports = name;

另请参见

require(),幸运的是,如果不将变量放入全局范围,则必须将require的结果分配给一个变量。有些语言,如ruby,通过导入污染了全球范围,这是一种糟糕的做法Hanks Andy Ray。你知道当变量被称为getNotes时它为什么工作吗?@尽管没有很好的理由。这绝对不应该起作用,谢谢。它确实有效,但我仍然不明白为什么它与getNotes一起工作,而没有其他东西,或者为什么它在视频中工作得很好?所以我再次检查了讲座,他确实存储了常数,所以这是我的一个错误。
const name = 'test' ;

module.exports = name;