节点需要路径引用问题
Node require path reference issue
我使用node来运行一些JS任务。我正在使用node require来包含我编写的其他所需文件。我试图包含的文件存在于同一目录中。这些文件没有什么特别之处;就是普通的JavaScript。我没有将内容提供给浏览器或任何东西。我只是想运行JS逻辑。
我的目录结构:
- 根
- 练习
- ex1
- FileLoader.js
- FileOne.js
- ex1
- 练习
在我的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
结果:- 尝试1 -错误:无法找到模块'./exercises/ex1/FileOne.js'
- 尝试2 -错误:无法找到模块'FileOne.js'
- 尝试3 -错误:找不到模块'/exercises/ex1/FileOne.js'
- 尝试4 -它工作,即使我没有想到....FML
所以最后一个是有效的,但所需的路径是相当愚蠢的。似乎我的应用程序没有根的概念。我假设节点认为根节点是ex1。但我希望第2次尝试能成功。我觉得我好像忽略了一些愚蠢的事情。
问题:
- 什么是正确的方法来使用文件路径与要求?
- 是否有办法设置一个根目录与节点?
谢谢你,约旦
正确的语法应该是require("./FileOne.js")
。如果文件放置在节点路径中,第二种形式(require('FileOne.js');
)可以工作。
通过NODE_PATH
设置节点root。例如,使用
NODE_PATH=/path/to/your/project/root node ex1.js
你可以引用FileOne为:
require("exercises/ex1/FileOne.js");
也可以考虑使用__dirname
。看看这个答案,你会有更好的理解。有时引用可能取决于在处理fs
等模块时调用node命令来启动应用程序的位置。因此,__dirname
将是一个安全的选择。
在Node.js中,__dirname总是当前执行脚本所在的目录(参见此)。换句话说,使用__dirname.
的脚本的目录相比之下,。给出在终端窗口中运行node命令的目录(即您的工作目录)。例外是当你使用。使用require(),在这种情况下,它的行为类似于__dirname.
这有点令人困惑,在链接的答案中解释得很清楚
相关文章:
- JavaScript变量引用数组时出现问题
- 性能问题:存储对DOM元素的引用与使用选择器相比
- Javascript-通过引用传递变量问题
- 我应该如何在JS中使用揭示模块模式,传递引用,并避免加载顺序问题
- 全球不断改变价值.可能通过引用或范围问题传递?帮助!链接中的详细示例
- 从函数中引用对象时遇到问题 - Adobe Animate canvas
- ExtJS 4.1 :建立对对象的引用时出现问题
- 在循环中创建的函数中使用时出现数组引用问题
- JavaScript <-> DOM 循环引用问题的精确解释
- 使用Foundation的Javascript源代码引用问题
- 节点需要路径引用问题
- jQuery引用问题与函数在OnClick
- JavaScript变量引用问题
- JS作用域/引用问题
- 解决了angular中指令包装中的圆形引用问题
- 反应引导元素的“引用”问题
- 陷入了一个简单的对象文字范围/引用问题
- JavaScript 循环引用问题
- Asmx Web服务引用问题
- 使用AngularJS "copy()"以避免引用问题