Heroku 构建在 package.json 文件中找不到 `@types`

2024-06-24

Heroku 构建错误

- TSError: ⨯ Unable to compile TypeScript:
- src/server.ts(1,38): error TS7016: Could not find a declaration file for module 'express'. '/app/node_modules/express/index.js' implicitly has an 'any' type.
- Try `npm i --save-dev @types/express` if it exists or add a new declaration (.d.ts) file containing `declare module 'express';`
- src/server.ts(10,14): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.

试图弄清楚如何让我的代码达到 Heroku 的要求已经被耽搁了一段时间,最新的错误如上面所示,我不确定我需要更改什么才能使其正常工作。我一直在遵循指南并有一个@types/express, @types/node等在我的 package.json 脚本中。然而,它并没有读取它们。不知道从这里去哪里,我们将不胜感激。

tsconfig.json

{
  "compilerOptions": {
    "target": "es2017",
    "module": "commonjs",
    "sourceMap": true,
    "outDir": "./build",
    "rootDir": "./src",
    "strict": true,
    "noImplicitAny": true,
    "moduleResolution": "node",
    "baseUrl": "./src",
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "lib": ["es2015"],
  "include": ["src/**/*.ts"],
  "exclude": ["node_modules", "src/**/*.test.ts"]
}

Procfile

web:ts-node/src/server.ts 

src/服务器.ts

import express, { Application } from 'express';
import { routes } from './routes';

// Boot express
export const app: Application = express();

// Application routing
routes(app);

const port = process.env.PORT || 5000;

// Start server
app.listen(port, () => console.log(`Server is listening on port ${port}!`));

包.json

{
  "name": "my-app",
  "version": "1.0.0",
  "main": "src/server.ts",
  "type": "commonjs",
  "scripts": {
    "start": "ts-node src/server.ts",
    "dev": "nodemon -x ts-node src/server.ts",
    "build": "tsc",
    "test": "jest --coverage"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "husky": {
    "hooks": {
      "pre-commit": "pretty-quick --staged"
    }
  },
  "devDependencies": {
    "@types/cors": "^2.8.12",
    "@types/express": "^4.17.13",
    "@types/node": "^16.7.6",
    "@types/jest": "^26.0.24",
    "@types/supertest": "^2.0.11",
    "@typescript-eslint/eslint-plugin": "^4.29.0",
    "@typescript-eslint/parser": "^4.29.0",
    "eslint": "^7.32.0",
    "eslint-config-standard": "^16.0.3",
    "eslint-plugin-import": "^2.23.4",
    "eslint-plugin-node": "^11.1.0",
    "eslint-plugin-promise": "^5.1.0",
    "husky": "^7.0.1",
    "jest": "^27.0.6",
    "nodemon": "^2.0.12",
    "prettier": "^2.3.2",
    "pretty-quick": "^3.1.1",
    "supertest": "^6.1.4",
    "ts-jest": "^27.0.4"
  },
  "dependencies": {
    "axios": "^0.21.1",
    "body-parser": "^1.19.0",
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "ts-node": "^10.1.0",
    "typescript": "^4.3.5"
  },
  "description": ""
}


弄清楚了。

Heroku 在构建项目时会修剪开发依赖项。因为我所有的@types位于devDependencies他们无法访问并导致最初的帖子中显示的错误。

包.json

  // i also added engine specifications. 
  // the docs suggest matching your configurations as closely to your dev 
  // environment as possible for obvious reasons.  
  "engines": {
    "node": "15.x",
    "npm": "7.x"
  },
...
  "dependencies": {
    "@types/cors": "^2.8.12",
    "@types/express": "^4.17.13",
    "@types/node": "^16.7.6",
    "axios": "^0.21.1",
    "body-parser": "^1.19.0",
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "ts-node": "^10.2.1",
    "typescript": "^4.4.2"
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Heroku 构建在 package.json 文件中找不到 `@types` 的相关文章

随机推荐