Невозможно скомпилировать машинопись на героку - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь развернуть приложение typj nodejs, используя команду express to heroku, код передвигается нормально, heroku устанавливает зависимости и затем запускает tsc, но выдает сбой с src/controller/adminTypes.ts:3:34 - error TS2307: Cannot find module '../repo/adminTypes'..

Я проверил строку, в которой происходит импорт, и выглядит так

import { insertAdminTypes } from "../repo/adminTypes";

Эквивалентный экспорт происходит так

export const insertAdminTypes = async queryObj => {
  // code
};

VSCode прекрасно разрешает пути, когда я пытаюсь запустить tsc локально, все прекрасно компилируется, и я получаю скомпилированные файлы в папке dist. Это только героку, которая, кажется, выдает ошибку для путей в Интернете. Это происходит не для каждого файла, указанная выше ошибка TS2307 генерируется только для нескольких файлов.

Это следующие конфигурационные файлы.

package.json

{
  "name": "express_server",
  "version": "0.0.1",
  "license": "UNLICENSED",
  "main": "./src/server.ts",
  "scripts": {
    "build-ts": "tsc",
    "start": "npx nodemon",
    "prod": "npx run build-ts",
    "postinstall": "npm run build-ts"
  },
  "dependencies": {
    "@types/body-parser": "^1.17.0",
    "@types/dotenv": "^6.1.0",
    "@types/express": "^4.16.0",
    "@types/jquery": "^3.3.22",
    "@types/node": "^10.12.2",
    "@types/underscore": "^1.8.9",
    "bcrypt": "^3.0.2",
    "body-parser": "^1.18.3",
    "dotenv": "^6.1.0",
    "express": "^4.16.4",
    "express-handlebars": "^3.0.0",
    "jsonwebtoken": "^8.3.0",
    "mongodb": "^3.1.9",
    "mysql": "^2.16.0",
    "nodemon": "^1.18.6",
    "reflect-metadata": "^0.1.12",
    "ts-node": "^7.0.1",
    "typeorm": "^0.2.8",
    "typescript": "^3.1.6",
    "underscore": "^1.9.1"
  },
  "devDependencies": {
    "husky": "^1.1.3",
    "lint-staged": "^8.0.4",
    "prettier": "^1.15.2",
    "pretty-quick": "^1.8.0",
    "tslint": "^5.11.0",
    "tslint-config-prettier": "^1.15.0",
    "tslint-plugin-prettier": "^2.0.1"
  },
  "husky": {
    "hooks": {
      "pre-commit": "pretty-quick --staged"
    }
  },
  "lint-staged": {
    "linters": {
      "*.{ts}": [
        "npx tslint --fix",
        "git add"
      ]
    },
    "ignore": [
      "./public",
      "./environment",
      "./node_modules"
    ]
  }
}

nodemon.json

{
  "ignore": ["**/*.test.ts", "**/*.spec.ts", ".git", "node_modules"],
  "watch": ["src"],
  "exec": "npx ts-node ./src/server.ts",
  "ext": "ts"
}

tsconfig.json

{
  "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "target": "es6",
    "noImplicitAny": false,
    "moduleResolution": "node",
    "sourceMap": true,
    "outDir": "dist",
    "pretty": true,
    "baseUrl": ".",
    "alwaysStrict": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "paths": {
      "*": ["node_modules/*", "src/types/*"]
    }
  },
  "include": ["src/**/*.ts"],
  "exclude": ["node_modules"]
}

1 Ответ

0 голосов
/ 14 ноября 2018

Обнаружил проблему, оказалось, что я не обращал внимания на имя файла, т. Е. Дело.

Например, ошибка, генерируемая как описано выше Cannot find module '../repo/adminTypes', была вызвана тем, что фактическое имя файла было AdminTypes, заглавная A.

VSCode / Windows автоматически обрабатывал чувствительность к регистру, поэтому он никогда не выдавал ошибку, но при развертывании на heroku сервер был очень строг с именами файлов.

...