我正在使用node来运行一些JS任务。我正在使用node require包含我编写的其他所需文件。我试图包含的文件存在于同一目录中。这些文件没什么特别之处;只是简单的旧JavaScript。我没有将内容提供给浏览器或任何东西。我只是想尝试运行JS逻辑。
我的目录结构:
在我的FileLoader.js中,我自己运行了这些文件路径模式中的每一个。它们是我尝试的顺序。
require('./exercises/ex1/FileOne.js'); // Attempt 1 path
require('FileOne.js'); // Attempt 2 path
require('/exercises/ex1/FileOne.js'); // Attempt 3 path
require('../../exercises/ex1/FileOne.js'); // Attempt 4 path
终端命令:
node ./exercises/ex1/ex1.js
成果:
所以最后一个工作但是所需的路径非常愚蠢。好像我的应用程序没有root的概念。我假设该节点认为我的根是ex1。但后来我希望尝试2能够奏效。我觉得我忽视了一些愚蠢的事情。
问题:
谢谢,
约旦
答案 0 :(得分:2)
正确的语法是require("./FileOne.js")
。如果文件放在节点路径中,则第二种形式(require('FileOne.js');
)将起作用。
要设置节点根目录,您可以使用NODE_PATH
。例如,使用
NODE_PATH=/path/to/your/project/root node ex1.js
您可以将FileOne引用为:
require("exercises/ex1/FileOne.js");
答案 1 :(得分:1)
另请考虑使用__dirname
。检查this answer以获得更好的洞察力。有时,引用可能取决于在处理fs
等模块时调用node命令的位置以启动应用程序。所以__dirname
是一个安全的选择。
在Node.js中,__ dirname始终是当前正在执行的脚本所在的目录(请参阅此内容)。换句话说,使用__dirname。
的脚本的目录 相反,。为您提供在终端窗口中运行node命令的目录(即您的工作目录)。您使用时例外。使用require(),在这种情况下,它的作用类似于__dirname。
它有点令人困惑,在答案链接中清楚地解释了。