2017-11-23 2 views
0

Ich habe ein Projekt in Typescript geschrieben, das jasmine-ts verwendet, um eine Reihe von Tests auszuführen. Ich muss einen Docker Container erstellen, um die Tests aus einigen Gründen auszuführen.Typescript-Importanweisungen, die nicht in einem Docker-Container funktionieren

Während das Projekt lokal läuft OK npm test:

c:\github\gareththegeek\corewar>npm test 

> [email protected] test c:\github\gareththegeek\corewar 
> nyc jasmine-ts 

Started 
....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... 


503 specs, 0 failures 
Finished in 0.893 seconds 

Wenn ich den gleichen Ordner containerise und npm test vom Docker Bild laufen, die Typoskript Einfuhren scheinen nicht erkannt zu werden.

c:\github\gareththegeek\corewar>docker run corewar 

> [email protected] test /usr/src/app 
> nyc jasmine-ts 


/usr/src/app/node_modules/ts-node/src/index.ts:307 
     throw new TSError(formatDiagnostics(diagnosticList, cwd, ts, lineOffset)) 
      ^
TSError: ⨯ Unable to compile TypeScript 
parser/Expression.ts (1,29): Cannot find module './interface/IExpression'. (2307) 
parser/Expression.ts (2,39): Cannot find module './interface/IToken'. (2307) 
parser/Expression.ts (3,30): Cannot find module './interface/ITokenStream'. (230 

Mein Docker Bild ist so einfach, wie es kommt:

FROM node:carbon 

# Create app directory 
WORKDIR /usr/src/app 

# Install app dependencies 
COPY package*.json ./ 

RUN npm install 

# Bundle app source 
COPY . . 

CMD [ "npm", "test" ] 

mir wirklich nicht sicher bin, warum die Docker Container anders zu meinem lokalen npm test Befehl verhalten. Ich gehe davon aus, dass es lokal ist, weil ich auf Windows bin und der Docker-Container nicht. Aber ich bin mir nicht sicher, wie ich das debuggen soll.

Kann irgendjemand irgendwelche Hinweise geben, warum Typoskript-Importe nicht so funktionieren, wie ich sie erwarte? Ich kann einige der Typoskript-Code einfügen, wenn es irgendeine Hilfe ist.

Antwort

1

Sigh ignorieren diese Frage, ich das Problem beheben, indem zu realisieren, dass meine zu interface während aus irgendeinem Grund genannt enthält der Ordner in Github Interface war.

Ich hatte alle meine Ordner lokal durch vscode umbenannt, aber dieser hatte Git nicht aktualisiert (obwohl andere getan haben: /).

Ich habe die folgenden:

cd parser 

git mv Interface ifacetemp 
git mv ifacetemp interface 

commit... 
push... 

Dies löste das Problem, sehr ärgerlich.

Verwandte Themen