Разверните сервер Node.js, созданный с помощью TypeScript, на Heroku - PullRequest
0 голосов
/ 18 апреля 2020

Я хочу развернуть сервер Node.js, созданный с помощью TypeScript на Heroku. Но это не работает. Я прочитал много уроков и других вопросов по переполнению стека, но ни один из них не работает. Ниже я публикую свой код для tsconfig. json и package. json.

package. json


  "main": "build/index.js",
  "scripts": {
    "start": "node build/index.js",
    "dev": "nodemon server.js",
    "build-ts": "tsc",
    "start:dev": "nodemon --config \"./nodemon.json\"",
    "test": "echo \"Error: no test specified\" && exit 1",
    "heroku-postbuild": "npm run build-ts"
  },
  "keywords": [],
  "author": "Gabriel Meyer",
  "license": "MIT",
  "devDependencies": {
    "@types/cors": "^2.8.6",
    "@types/express": "^4.17.3",
    "@types/node": "^12.12.31",
    "nodemon": "^2.0.2",
    "prettier": "^2.0.2",
    "ts-node": "^8.8.1",
    "tslib": "^1.11.1",
    "tslint": "^6.1.0",
    "typescript": "^3.8.3"
  },
  "dependencies": {
    "body-parser": "^1.19.0",
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "uuid": "^7.0.2",
    "websocket": "^1.0.31"
  }

tsconfig. json


{
  "compilerOptions": {
    "module": "commonjs",
    "strict": true,
    "baseUrl": ".",
    "rootDir": "src",
    "outDir": "build",
    "sourceMap": true,
    "removeComments": true,
    "experimentalDecorators": true,
    "target": "ES6",
    "esModuleInterop": true,
    "emitDecoratorMetadata": true,
    "moduleResolution": "node",
    "importHelpers": true,
    "strictPropertyInitialization": false,
    "types": ["node"],
    "typeRoots": ["node_modules/@types"]
  },
  "include": ["src/**/*.ts"],
  "exclude": ["node_modules"]
}

index.ts


import express from 'express';
const app = express();
const port: string | number = process.env.PORT || 5000;
app.use('*', (req, res) => {
  res.send('<h1>Welcome to your server!</h1>');
});

// create a server object:
app.listen(port, () => console.log(`hosting @${port}`));

1 Ответ

0 голосов
/ 18 апреля 2020

Теперь я нашел ответ:

Моя ошибка заключалась в том, что я поместил все связанные с Typescript зависимости в devDependencies . Heroku нуждается в машинописи , ts-node и tslib в качестве регулярной зависимости для передачи .ts-файлов в. js -файлы. Смотрите ниже:

пакет. json

"dependencies": {
    "ts-node": "^8.8.1",
    "tslib": "^1.11.1",
    "typescript": "^3.8.3",
    "body-parser": "^1.19.0",
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "uuid": "^7.0.2",
    "websocket": "^1.0.31"
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...