Nodejsのウィンドウにスラッシュを含む絶対パスを使用できますか?私はこのようなものを使用しています:
global.__base = __dirname + '/';
var Article = require(__base + 'app/models/article');
しかし、Windowsでは、C:\Something\Something/apps/models/article
のようなものが必要なため、ビルドは失敗します。私はwebpackを使用しています。では、要求が同じままになるようにこの問題を回避する方法、つまり__base + 'app/models/src'
?
答えるのが少し遅れていることは知っていますが、私の答えは何人かの訪問者に役立つと思います。
Node.js
では、__filename
変数と__dirname
変数をそれぞれ使用するだけで、現在実行中のファイル名とそのディレクトリを簡単に取得できます。
システムに応じてスラッシュを修正するには、Node.js
のpath
モジュールを使用できます。
var path = require('path');
ここにあるのは混乱したパスであり、サーバーで使用したい場合はそれが正しいことを望みます。ここでは、path
モジュールがすべてを行います
var randomPath = "desktop // my folder/\ myfile.txt";
var correctedPath = path.normalize(randomPath); //that's that
console.log(correctedPath);
desktop/my folder/myfile.txt
ファイルの絶対パスが必要な場合は、resolve
モジュールのpath
関数も使用できます。
var somePath = "./img.jpg";
var resolvedPath = path.resolve(somePath);
console.log(resolvedPath);
/Users/vikasbansal/Desktop/temp/img.jpg
私は最終的にこのようにしました:
_var slash = require('slash');
var dirname = __dirname;
if (process.platform === 'win32') dirname = slash(dirname);
global.__base = dirname + '/';
_
そして、var Article = require(__base + 'app/models/article');
を要求します。これは、npmパッケージのスラッシュを使用します(パスのバックスラッシュをスラッシュに置き換え、さらにいくつかのケースを処理します)。
ノード自体にパッチを適用しているため、これに対してはお勧めしますが、...必要な方法に変更はありません。
(function() {
"use strict";
var path = require('path');
var oldRequire = require;
require = function(module) {
var fixedModule = path.join.apply(path, module.split(/\/|\\/));
oldRequire(fixedModule);
}
})();