我正在使用gulp-karma并面临一个简单的问题,但似乎无法找到我做错了什么。
gulp.task('test', function (done) {
karma.start({
configFile: __dirname + '..\\test\\' +'\karma.conf.js',
singleRun: true
}, done);
});
这是我正在使用的代码,我似乎无法在文件夹目录中返回1级。当我执行上述操作时,只需追加 ..\
到文件夹目录,而不会返回1级(这是..\
的常用用法)。以下是文件夹结构。
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
答案 0 :(得分:18)
TL; DR
使用path.join(__dirname, '..', 'test', 'karma.conf.js')
。禁止使用斜杠。
长期回答
正如许多答案所指出的那样,使用path
模块可能是最好的方法。
但是,这里的大多数解决方案已回到使用斜杠之类的方式:
path.join(__dirname+'../test/karma.conf.js')
但是,通过这样做,您实现了使用path
的目的。无论底层操作系统(Linux,Windows等)如何,都可以使用path
进行操作。只是为了提供一些见解,您可以直接将路径操作作为字符串操作(例如__dirname + '../test/karma.conf.js'
。您不要这样做,因为Linux使用正斜杠(/),Windows使用反斜杠(\)。这使得跨操作系统移植时,您的应用程序容易出错。
因此,更好的方法是:
path.join(__dirname, '..', 'test', 'karma.conf.js')
当然要回来了-避免在path.join
中使用斜杠,而将散布到参数中。
答案 1 :(得分:15)
我正在使用(路径)NPM用于上述用法......
在js文件中只需要路径 npm。然后使用
let reqPath = path.join(__dirname, '../../../');//It goes three folders or directories back from given __dirname.
答案 2 :(得分:8)
__dirname
只是一个字符串。您可以使用../
遍历文件夹结构和path.join来解析路径
path = require('path')
configFile: path.join(__dirname, '../test/karma.conf.js'),
答案 3 :(得分:2)
尝试在\\
之前加..\\
。
如果没有它,您生成的路径会有一个名为WebApi...
的文件夹作为其中的一部分。您可以在从错误消息输出的路径中看到这一点。
像这样:
gulp.task('test', function (done) {
karma.start({ configFile: __dirname + '\\..\\test\\' +'\karma.conf.js', singleRun: true }, done);
});
您可能还想查看使用npm的path库。通过根据需要添加和删除额外的路径分隔符,可以更轻松地组合路径。
答案 4 :(得分:2)
从根目录
(path.join(__dirname , 'views' ,'main.html')) -> will return Root:/views/main.html
来自Root的任何子文件夹
(path.join(__dirname , '../views/main.html')) -> same as above
答案 5 :(得分:1)
你可以像这样使用路径
const path = require('path');
path.join(__dirname, "../");
答案 6 :(得分:0)
如果您将路径作为字符串发送,
configFile: path.join(__dirname, '../test/karma.conf.js'),
这不起作用。
相反,你必须使用逗号,(加号连接两个字符串)
Select *
from List1 CROSS JOIN
List2 CROSS JOIN
List3;
答案 7 :(得分:0)
只需将\
附加在..\test
之前。
答案 8 :(得分:0)
您需要了解有关相对文件路径的所有信息:
以/开头,然后返回到根目录并从那里开始
以../开头向后移动一个目录,然后从那里开始
以../../开头向后移动两个目录,然后从那里开始(依此类推...)
要前进,只需从第一个子目录开始,然后继续前进。
答案 9 :(得分:0)
无论使用何种操作系统,这都会将您移回 2 个目录:
import { join, sep } from 'path';
join(__dirname, sep, "..", sep, "..");
答案 10 :(得分:0)
如 Pranav Totla 所说,使用正斜杠 ("/") 或反斜杠 ("") 对路径进行硬编码会使应用程序在跨操作系统移植时容易出错。
// To go down on the three from index.html:
path.join(__dirname, 'css', 'style.css')
// To go up on the three from style.css:
path.join(__dirname, '..', 'img', 'cat.jpg')
// Three
root/
| |_css/
| |_img/
|
|_index.html