gulp-karma を使用していて、単純な問題に直面していますが、私が間違っていることを見つけることができません。
_gulp.task('test', function (done) {
karma.start({
configFile: __dirname + '..\\test\\' +'\karma.conf.js',
singleRun: true
}, done);
});
_
これが私が使用しているコードですが、フォルダディレクトリの1レベル前に戻るようには見えません。上記を実行すると、append_..\
_が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
_
上記の使用法に(パス)NPMを使用しています......
jsファイルでpath npmを要求するだけです。
let reqPath = path.join(__dirname, '../../../');//It goes three folders or directories back from given __dirname.
__dirname
は単なる文字列です。 ../
は、フォルダ構造とpath.joinをたどってパスを解決します。
path = require('path')
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
\\
の前に..\\
を付けてみてください。
これがない場合、生成するパスには、その一部としてWebApi...
というフォルダーがあります。これは、エラーメッセージから出力されるパスで確認できます。
このような:
gulp.task('test', function (done) {
karma.start({ configFile: __dirname + '\\..\\test\\' +'\karma.conf.js', singleRun: true }, done);
});
Npmの path ライブラリを使用して調べることもできます。必要に応じて、パス区切り文字を追加したり削除したりすることで、パスの結合がはるかに簡単になります。
パスを文字列として送信する場合、
configFile: path.join(__dirname+'../test/karma.conf.js'),
これは機能しません。
代わりに、コンマを使用する必要があります(プラス記号は2つの文字列を連結します)。
configFile: path.join(__dirname, '../test/karma.conf.js'),
\
の前に..\test
を追加するだけです。
TL; DR
path.join(__dirname, '..', 'test', 'karma.conf.js')
を使用します。スラッシュの使用を防ぎます。
長い答え
多くの回答が指摘しているように、path
モジュールを使用するのがおそらく最良の方法です。ただし、ここでのソリューションのほとんどは、次のようなスラッシュの使用に戻りました。
path.join(__dirname+'../test/karma.conf.js')
ただし、これを行うと、path
を使用する目的を打ち破ることになります。基になるOS(Linux、Windowsなど)に関係なく、パスを使用して操作を実行します。洞察を少し与えるだけで、パスの操作を文字列操作として直接実行できます(___dirname + '../test/karma.conf.js'
_など)。Linuxはスラッシュ(/)を使用し、Windowsはバックスラッシュ(\)を使用するため、これは行いません。アプリケーションをオペレーティングシステム間で移植すると、エラーが発生しやすくなります。
したがって、より良い方法は次のとおりです。
path.join(__dirname, '..', 'test', 'karma.conf.js')
そしてもちろん、戻ってきます-_path.join
_でのスラッシュの使用を防ぐ代わりに、パラメータをspreadしてください。