首页 > 解决方案 > 节点“require”语法创建模块的新引用

问题描述

我有那些文件

/Controller/sub_module/conversation.js

var test = [];
function push(){
    test.push(test.length);
}
module.exports = {
    push,
    getTest(){
      return test;
    }
}

/index.js(在根目录)

require('../chatserver/Controller/sub_module/conversation').push();//push new item to test variable

然后在 /Controller/index.js

const test1 = require('../Controller/sub_module/conversation').getTest();//return [0]
const test2 = require('./sub_module/conversation').getTest(); //return []

test1 和 test2 没有指向同一个引用,为什么?Node 8.11.3 IDE Webstorm 调试镜像

标签: javascriptnode.js

解决方案


感谢@TJCrowder:https ://nodejs.org/api/modules.html#modules_module_caching_caveats 。

我认为所有相对路径都将转换为绝对路径以供名称缓存使用,并且在此转换中,相对路径的未指定部分将自动小写字母。

因为那个节点会考虑

require('./sub_module/conversation') //the unspecified part is 'Controller' will be convert to 'controller'

require('../controller/sub_module/conversation')

但与

require('../Controller/sub_module/conversation')

推荐阅读