Typescript导入语句不能在Docker容器中工作
我有一个用Typescript
编写的项目,它使用jasmine-ts
来运行一系列的testing。 我需要创build一个Docker
容器来运行testing有几个原因。
虽然项目本地运行OK npm test
:
c:\github\gareththegeek\corewar>npm test > corewar@0.0.26 test c:\github\gareththegeek\corewar > nyc jasmine-ts Started ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... 503 specs, 0 failures Finished in 0.893 seconds
当我containerise相同的文件夹,并从泊坞窗图像运行npm test
,Typescriptimport似乎不被认可。
c:\github\gareththegeek\corewar>docker run corewar > corewar@0.0.26 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
我的docker形象是如此基本:
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" ]
我真的不确定为什么泊坞窗容器行为不同于我本地npm test
命令。 我将假设这是因为在本地我在窗口和docker集装箱不是。 但我真的不确定如何debugging这个。
任何人都可以给任何指针,为什么Typescriptimport不在docker工作,我也期待他们呢? 如果有任何帮助,我可以粘贴一些Typescript代码。
叹了口气忽略这个问题,我解决了这个问题,意识到我的包括提到interface
而出于某种原因,Github中的文件夹是Interface
。
我通过vscode在本地重命名了所有文件夹,但是这个文件夹并没有更新git(即使其他人做了:/)。
我做了以下几点:
cd parser git mv Interface ifacetemp git mv ifacetemp interface commit... push...
这解决了这个问题,非常烦人。