Javascript 如何使用_dirname返回1个文件夹级别?
我正在使用和面对一个简单的问题,但似乎无法找到我做错了什么Javascript 如何使用_dirname返回1个文件夹级别?,javascript,node.js,directory,path,gulp,Javascript,Node.js,Directory,Path,Gulp,我正在使用和面对一个简单的问题,但似乎无法找到我做错了什么 gulp.task('test', function (done) { karma.start({ configFile: __dirname + '..\\test\\' +'\karma.conf.js', singleRun: true }, done); }); 这是我正在使用的代码,我似乎无法回到文件夹目录中的1级。当我执行上述操作时,它只将。\附加到文件夹direcotry,
gulp.task('test', function (done) {
karma.start({
configFile: __dirname + '..\\test\\' +'\karma.conf.js',
singleRun: true
}, done);
});
这是我正在使用的代码,我似乎无法回到文件夹目录中的1级。当我执行上述操作时,它只将。\
附加到文件夹direcotry,而不返回一级(这是。\
的常用用法)。下面是文件夹结构
parent|
test|karma.conf.js
webapirole|gulpfile.js
我的文件夹位于webapirole文件夹中。我想返回1个文件夹,返回包含karma.conf.js文件的test文件夹。有人能让我明白我做错了什么吗
我收到的错误
[18:06:32] Starting 'tdd'...
ERROR [config]: File C:\Users\Documents\WebApiRole..\test\karma.conf.js does not exist
尝试将
\\
放在之前。\\
如果没有它,生成的路径将包含一个名为WebApi…
的文件夹。您可以在从错误消息输出的路径中看到这一点
像这样:
gulp.task('test', function (done) {
karma.start({ configFile: __dirname + '\\..\\test\\' +'\karma.conf.js', singleRun: true }, done);
});
您可能还希望研究如何使用npm中的库。通过根据需要添加和删除额外的路径分隔符,它使组合路径变得更加容易。
\uu dirname
只是一个字符串。您可以使用。/
向上遍历文件夹结构和路径。join可解析路径
path = require('path')
configFile: path.join(__dirname, '../test/karma.conf.js'),
我正在使用(路径)NPM进行上述使用
只需在js文件中要求pathnpm,然后使用
let reqPath = path.join(__dirname, '../../../');//It goes three folders or directories back from given __dirname.
如果以字符串形式发送路径
configFile: path.join(__dirname+'../test/karma.conf.js'),
这不管用
相反,您必须使用逗号(加号连接两个字符串)
从根目录
(path.join(__dirname , 'views' ,'main.html')) -> will return Root:/views/main.html
从根目录的任何子文件夹
(path.join(__dirname , '../views/main.html')) -> same as above
TL;DR
使用path.join(uuu dirname,“…”,“test”,“karma.conf.js”)
。防止使用斜杠
长答案
正如许多答案所指出的,使用path
模块可能是最好的方法。
但是,这里的大多数解决方案都使用了斜杠,如:
path.join(uu dirname+'../test/karma.conf.js')
但是,通过这样做,您就超出了使用path
的目的。无论底层操作系统(Linux、Windows等)如何,都可以使用path
执行操作。为了让您了解一些情况,您可以直接将路径操作作为字符串操作(如\uu dirname+'../test/karma.conf.js'
)来执行。您不这样做是因为Linux使用正向斜杠(/),Windows使用反向斜杠(\)。这使得您的应用程序在跨操作系统移植时容易出错
因此,更好的方法是:
path.join(uuu dirname,“…”,“test”,“karma.conf.js”)
当然,回来-防止在
路径中使用斜杠。加入,而不是分散参数。以下是有关相对文件路径的所有信息:
从/开始返回根目录并从那里开始
从..开始/向后移动一个目录并从那里开始
从.././开始向后移动两个目录并从那里开始(依此类推…)
要继续前进,只需从第一个子目录开始并继续前进。您可以使用如下路径
const path = require('path');
path.join(__dirname, "../");
这将使您返回2个目录,而不考虑任何操作系统:
import { join, sep } from 'path';
join(__dirname, sep, "..", sep, "..");
感谢您的回复。但是没有成功。这是我得到的关于错误[config]:文件C:\Users\Documents\WebApiRole\..\test\karma.conf.js不存在的输出!
如您所见,它仍然认为..\是字符串路径的一部分,可能重复
import { join, sep } from 'path';
join(__dirname, sep, "..", sep, "..");