How to go back 1 folder level with __dirname?
Solution 1
TL;DR
Use path.join(__dirname, '..', 'test', 'karma.conf.js')
. Prevent use of slashes.
Long Answer
As a lot of answers have pointed out, using path
module is probably the best way.
However, most of the solutions here have gone back to using slashes like:
path.join(__dirname+'../test/karma.conf.js')
However, by doing this, you're beating the purpose of using path
. One uses path
to do operations irrespective of the underlying OS (Linux, Windows etc). Just to give a bit of insight, you can do the path operations directly as string operations (like __dirname + '../test/karma.conf.js'
. You do not do this because Linux uses forward slashes ( / ), Windows uses backward slashes ( \ ). This makes your application prone to errors when you port it across operating systems.
Thus, the better way would be:
path.join(__dirname, '..', 'test', 'karma.conf.js')
And of course, coming back - prevent use of slashes in your path.join
, instead spread out your params.
Solution 2
I am using (path) NPM for the above usage......
simply require path npm in js file.Then use
let reqPath = path.join(__dirname, '../../../');//It goes three folders or directories back from given __dirname.
Solution 3
__dirname
is just a string. you can use ../
to traverse up the folder structure and path.join to resolve the path
path = require('path')
configFile: path.join(__dirname, '../test/karma.conf.js'),
Solution 4
You can use Path like this
const path = require('path');
path.join(__dirname, "../");
Solution 5
if you are sending the path as a string,
configFile: path.join(__dirname+'../test/karma.conf.js'),
this doesn't work.
Instead you have to use a comma, (the plus sign concatenates the two strings)
configFile: path.join(__dirname, '../test/karma.conf.js'),
Malik
Updated on July 30, 2021Comments
-
Malik almost 3 years
I am using gulp-karma and facing a simple problem but cannot seems to find what i am doing wrong .
gulp.task('test', function (done) { karma.start({ configFile: __dirname + '..\\test\\' +'\karma.conf.js', singleRun: true }, done); });
Here is the code i am using and i cannot seems to go 1 level back in the folder directory . When i do the above it just append the
..\
to the folder direcotry without going 1 level back (which is the usual use of..\
). Following is the folder structure .parent| test|karma.conf.js webapirole|gulpfile.js
and my folder is inside the webapirole folder . i want to go back 1 folder back and go inisde the test folder which contains the karma.conf.js file. can anyone make me understand what i am doing wrong here ?
error i am getting
[18:06:32] Starting 'tdd'... ERROR [config]: File C:\Users\Documents\WebApiRole..\test\karma.conf.js does not exist
-
Malik about 9 yearsthank you for your response . however it didn't work out . this is the output i am getting for that
ERROR [config]: File C:\Users\Documents\WebApiRole\..\test\karma.conf.js does not exist!
as you can see it still considers ..\ as part of the path string -
17xande over 2 yearsThis is the best answer.
-
rishi over 2 yearsusing slashes with the path module, defeats the purpose of using
path
. please see @Pranav Totla's answer below stackoverflow.com/a/61056875/14393584