首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确地使用nodejs/ts构建码头?

如何正确地使用nodejs/ts构建码头?
EN

Stack Overflow用户
提问于 2019-10-31 01:39:16
回答 1查看 1.8K关注 0票数 0

为了在prod中运行这个项目而挣扎了几天,它一直显示出不同的错误。最后一个(希望如此)是:

代码语言:javascript
复制
> rimraf dist && tsc -p tsconfig.build.json
tsc-watch/test/fixtures/failing.ts(2,1): error TS1005: '}' expected.

但是tsconfig.build.json很好:

代码语言:javascript
复制
{
  "extends": "./tsconfig.json",
  "exclude": ["node_modules", "dist", "test", "**/*spec.ts"]
}

当我尝试用:docker-compose up --force-recreate --build构建/运行对接容器时,就会发生这种情况。

下面是我在Dockerfile中的内容:

代码语言:javascript
复制
FROM node:11-stretch
ADD ./* $HOME/
RUN npm install
RUN npm run build
CMD npm run start:prod

和package.json

代码语言:javascript
复制
{
  "name": "mvp-api",
  "private": true,
  "version": "0.0.1",
  "description": "MVP API",
  "license": "MIT",
  "scripts": {
    "build": "rimraf dist && tsc -p tsconfig.build.json",
    "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
    "start": "ts-node -r tsconfig-paths/register src/main.ts",
    "start:dev": "tsc-watch -p tsconfig.build.json --onSuccess \"node dist/main.js\"",
    "start:debug": "tsc-watch -p tsconfig.build.json --onSuccess \"node --inspect-brk dist/main.js\"",
    "start:prod": "node dist/main.js",
    "lint": "tslint -p tsconfig.json -c tslint.json",
    "test": "jest",
    "test:watch": "jest --watch",
    "test:cov": "jest --coverage",
    "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
    "test:e2e": "jest --config ./test/jest-e2e.json"
  },
  "dependencies": {
    "@nestjs/common": "^6.5.3",
    "@nestjs/core": "^6.5.3",
    "@nestjs/jwt": "^6.1.1",
    "@nestjs/microservices": "^6.0.4",
    "@nestjs/passport": "^6.1.0",
    "@nestjs/platform-express": "^6.0.4",
    "@nestjs/swagger": "^3.1.0",
    "@nestjs/typeorm": "^6.1.3",
    "@nestjs/websockets": "^6.0.4",
    "@nestrx/twilio": "0.0.2",
    "@types/mailgun-js": "^0.22.3",
    "@types/qrcode": "^1.3.4",
    "aws-sdk": "^2.513.0",
    "cache-manager": "^2.10.0",
    "cache-manager-mongodb": "^0.2.1",
    "cache-manager-redis-store": "^1.5.0",
    "class-transformer": "^0.2.3",
    "class-validator": "^0.10.0",
    "dotenv": "^8.0.0",
    "hbs": "^4.0.4",
    "is-base64": "^0.1.0",
    "libphonenumber-js": "^1.7.22",
    "mailgun-js": "^0.22.0",
    "mysql": "^2.17.1",
    "nestjs-config": "^1.4.3",
    "onesignal-node": "^2.1.1",
    "passport": "^0.4.0",
    "passport-jwt": "^4.0.0",
    "qrcode": "^1.4.1",
    "randomstring": "^1.1.5",
    "reflect-metadata": "0.1.13",
    "rimraf": "2.6.3",
    "rxjs": "6.4.0",
    "swagger-ui-express": "^4.0.7",
    "twilio": "^3.33.4",
    "typeorm": "^0.2.18",
    "vcard-generator": "0.0.7"
  },
  "devDependencies": {
    "@nestjs/testing": "6.1.1",
    "@types/cache-manager": "^2.10.0",
    "@types/express": "4.16.1",
    "@types/jest": "24.0.11",
    "@types/node": "11.13.4",
    "@types/randomstring": "^1.1.6",
    "@types/supertest": "2.0.7",
    "jest": "24.7.1",
    "prettier": "1.17.0",
    "supertest": "4.0.2",
    "ts-jest": "24.0.2",
    "ts-loader": "^6.0.4",
    "ts-node": "8.1.0",
    "tsc-watch": "2.2.1",
    "tsconfig-paths": "3.8.0",
    "tslint": "5.16.0",
    "typescript": "3.4.3",
    "webpack": "^4.39.2",
    "webpack-cli": "^3.3.6",
    "webpack-node-externals": "^1.7.2"
  },
  "jest": {
    "moduleFileExtensions": [
      "js",
      "json",
      "ts"
    ],
    "rootDir": "src",
    "testRegex": ".spec.ts$",
    "transform": {
      "^.+\\.(t|j)s$": "ts-jest"
    },
    "collectCoverageFrom": [
      "**/*.(t|j)s"
    ],
    "coverageDirectory": "../coverage",
    "testEnvironment": "node"
  }
}

它过去使用这些配置构建得很好,但是在清除了所有容器/映像并尝试重新创建所有东西之后,它就无法工作了。

有谁知道如何让它正常运行吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-01 05:22:05

很明显,问题是node_modules会继续复制。

添加具有以下内容的.dockerignore文件可以解决这个问题:

代码语言:javascript
复制
node_modules

现在我可以成功地运行码头集装箱了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58635837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档