Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 编写commonjs模块并使用require加载(不使用相对路径)_Javascript_Node.js_Commonjs - Fatal编程技术网

Javascript 编写commonjs模块并使用require加载(不使用相对路径)

Javascript 编写commonjs模块并使用require加载(不使用相对路径),javascript,node.js,commonjs,Javascript,Node.js,Commonjs,引用本地commonjs模块而不使用以下相对路径的最佳实践是什么 var custMod= require(‘customModule’); custMod(true); custMod.save(‘foo’); 构建这样一个模块有什么参考吗 若我像下面这样编写模块,那个么当我调用custMode.save(12)时,就会得到未定义的模块 您可以为require添加路径,以便使用 require.paths.push('/my/path'); 或 取决于您的节点版本 如果customModu

引用本地commonjs模块而不使用以下相对路径的最佳实践是什么

var custMod= require(‘customModule’);
custMod(true);
custMod.save(‘foo’);
构建这样一个模块有什么参考吗

若我像下面这样编写模块,那个么当我调用custMode.save(12)时,就会得到未定义的模块


您可以为
require
添加路径,以便使用

require.paths.push('/my/path');

取决于您的节点版本

如果
customModule.js
存在于
/my/path/customModule.js
,您可以使用

require('customModule');

不过请注意,您需要在打算使用此方法的每个模块上都执行此操作。

老实说,我希望node能让这更容易实现。一种可能性:

project_root
`--node_modules
   |--npm-module-1
   |--npm-module-2
   |--... (etc)
   `--lib
      |--my-module.js
      `--my-other-module.js
project_root
|--node_modules
|  |--npm-module-1
|  |--npm-module-2
|  `--... (etc)
`--lib
   `--node_modules
      |--my-module.js
      `--my-other-module.js
使用上面的内容,您可以在项目中的任何位置键入
require('lib/my module')
。(请确保不要安装名为
lib
:)的npm模块)另一种可能性:

project_root
`--node_modules
   |--npm-module-1
   |--npm-module-2
   |--... (etc)
   `--lib
      |--my-module.js
      `--my-other-module.js
project_root
|--node_modules
|  |--npm-module-1
|  |--npm-module-2
|  `--... (etc)
`--lib
   `--node_modules
      |--my-module.js
      `--my-other-module.js
使用以上内容,您可以键入
require('my-module')
,但仅限于
project\u root/lib/
下的任何文件


前一种方法的一个优点是,
require('lib/my module')
可以非常容易地一目了然地判断哪些模块是项目的本地模块。但是后者的类型较少。

您是否在问如何编写注入全局变量的模块?或者如何创建具有自定义属性的函数?你说的“这个”到底是什么?@FelixKling我问的是如何编写一个注入全局变量并可以使用require函数加载的模块。仍然不能100%确定你在问什么,但我已经根据我的假设添加了一个答案。“注入全局变量”是什么意思?每个模块都可以加载
require
。应避免注入全局变量。模块的加载方式(即通过直接路径或名称)不受模块本身的影响。这取决于节点环境的设置方式。这可能有助于理解这个问题:“否则,您将需要npm链接或将您的模块添加到npm中。”不是真的。真正需要做的是模块位于包的
节点\u modules
文件夹中
npm
只是让这更方便。但是是的,添加到npm变得更实用了,因为它提供了私有模块。@FelixKling你说得对,删除了。我不认为这是我想要的,但我可以发誓有一个NPM cli标志,可以将文件夹复制到
node\u modules
。是的,我认为这就是NPM link所做的(它将模块链接到当前包)。我只是说你不需要它(我想我太挑剔了;)