javascript - 节点“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 调试镜像
解决方案
感谢@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')
推荐阅读
- arrays - C 指向数组的指针
- amazon-web-services - 源请求 lambda 不会从源返回任何内容
- r - 在 R 中绘制几个直方图
- c# - SharpDx:无法从“System.IntPtr”转换为“SharpDX.MediaFoundation.IByteStream”
- javascript - 损坏的小部件在哪里?
- c++ - C++ 中的生产者-消费者,不使用 pthread 库
- javascript - V8 是执行解释器产生的字节码还是涡轮风扇编译器产生的二进制代码?
- google-apps-script - 谷歌应用脚本宏中如何引用工作表名称?
- swift - 从 Fire Storage 检索图像,但是如果图像不存在,则应用程序崩溃
- mysql - Node JS / MySQL:无法在我的文件之间导出我的数据库