2015-07-09 4 views
18

Ich schreibe einige Mokka-Tests, den Code laden, die Pfade wie diese:Mokka entspricht webpack Entschlossenheit Wurzel

import MyStore from "stores/MyStore" 

Dies funktioniert im Web-Browser in Ordnung, weil wir die webpack-dev-server verwenden, die dies wiederum lesen Eintrag von webpack.config.js: config.resolve.root: [path.resolve(__dirname, "./app")] so weiß es ./app/stores/MyStore zu finden.

Dieser Pfad funktioniert nicht, wenn er von mocha --compilers js:babel/register ausgeführt wird. Ich versuche ein Paket oder eine Konfiguration zu finden, die ich dafür verwenden kann. Es würde uns ersparen, Code-Referenzen ändern zu müssen und natürlich unsere Importe portabler zu halten.

Nicht sicher, ob es darauf ankommt, wir verwenden iojs. Wenn dies wirklich nicht möglich ist, ist es in Ordnung, nur die Pfade zu aktualisieren. Danke ...

+0

Das ist ein Nicht-Standard-webpack Merkmal ist, wird es wahrscheinlich nicht so leicht in Knoten arbeiten. Warum nicht standardmäßige relative Pfade verwenden? – loganfsmyth

Antwort

13

Wie wäre es mit Ihrer app Verzeichnis in $NODE_PATH:

env NODE_PATH=$NODE_PATH:$PWD/app mocha ... 
+0

Wie funktioniert es unter Windows? –

+0

Windows hat auch Umgebungsvariablen: http://www.computerhope.com/issues/ch000549.htm – machineghost

+0

ich kann das nicht mit Windows arbeiten – jasan

2

In Fenstern, ich hatte dies zu tun:

set NODE_PATH=%CD%/app&& mocha... 

aus irgendeinem Grund, das Hinzufügen ein Leerzeichen nach " App 'würde dazu führen, dass es nicht funktioniert

3

Hier ist eine Cross-Plattform-Methode. Installieren Sie zuerst cross-env:

npm install cross-env --save-dev 

dann in Ihrem package.json:

"scripts": { 
    ... 
    "test": "cross-env NODE_PATH=./app mocha ..." 
}