node.js - Hva går galt med mine delte avhengigheter i vercel-monorepo?
Jeg har et problem med monorepoet mitt, jeg prøver å distribuere en standard express.js-applikasjon, men de delte avhengighetene lastes ikke etter distribusjonen, det fungerer i lokal utvikling.
Har noen noen gang støtt på dette problemet med lignende konfigurasjon når de brukte Vercel CLI for distribusjoner? Takk.
Ideer :
Jeg tror problemet sannsynligvis kommer fra
<rootDir>/services/my-api/vercel.jsonher (det må sannsynligvis vente på flere instruksjoner):
"builds": [{ "src": "src/*.ts", "use": "@vercel/node" }]
Annen løsning:
Jeg tror for å løse problemet vil jeg bruke en bundler (
webpackeller@vercel/ncc) for å pakke avhengigheter inn i en komplett bygging. Jeg har ikke startet ennå, men tror du det kan medføre andre problemer? Jeg fant ingen repo på GitHub eller GitLab som gjorde dette, og jeg tror det er sannsynligvis en grunn til det. Jeg er ikke sikker på resultatet fordi jeg tror en bygging allerede gjøres eksternt med@vercel/nccpå Vercel-tjenester.
Oppstod feil:
Ved bygging fra Vercel-tjenesten, prøver Yarn å importere pakken fra Yarn-pakkeregisteret.
18:55:41.470 Retrieving list of deployment files...
18:55:45.058 Downloading 10 deployment files...
18:55:46.336 Analyzing source code...
18:55:46.353 Warning: Due to `builds` existing in your configuration file, the Build and Development Settings defined in your Project Settings will not apply. Learn More: https://vercel.link/unused-build-settings
18:55:47.624 Installing build runtime...
18:55:48.205 Build runtime installed: 581.371ms
18:55:51.010 Looking up build cache...
18:55:51.501 Build cache found. Downloading...
18:55:53.000 Build cache downloaded [19.63 MB]: 1498.987ms
18:55:54.118 Installing dependencies...
18:55:54.466 yarn install v1.22.10
18:55:54.485 info No lockfile found.
18:55:54.490 [1/4] Resolving packages...
18:55:54.700 error An unexpected error occurred: "https://registry.yarnpkg.com/@vercel-monorepo-example%2fcommon: Not found".
18:55:54.700 info If you think this is a bug, please open a bug report with the information provided in "/vercel/path1/yarn-error.log".
18:55:54.701 info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
18:55:54.721 Error: Command "yarn install" exited with 1
Min konfigurasjon:
Versjoner :
| Verktøy | Versjon |
|---|---|
| Vercel CLI | 23.0.0 |
Tre :
| - packages
| - common
| - src
| - index.ts
| - package.json
| - tsconfig.json
| - services
| - my-api
| - src
| - index.ts
| - package.json
| - tsconfig.json
| - vercel.json
| - lerna.json
| - package.json
| - yarn.lock
Filer :
<rootDir>/lerna.json
{
"npmClient": "yarn",
"version": "independent",
"useWorkspaces": true
}
<rootDir>/package.json
{
"name": "@vercel-monorepo-example/monorepo",
"description": "vercel-monorepo-example project root",
"version": "0.1.0",
"private": true,
"workspaces": [
"packages/*",
"services/*"
]
}
<rootDir>/packages/common/package.json
{
"name": "@vercel-monorepo-example/common",
"description": "vercel-monorepo-example common",
"version": "0.1.0",
"main": "src/index.ts",
"files": ["src"]
}
<rootDir>/packages/common/tsconfig.json
{
"compilerOptions": {
"target": "es5",
"lib": ["es5", "es6", "esnext"],
"module": "commonjs",
"moduleResolution": "node",
"types": ["node"],
"sourceMap": true,
"declaration": true,
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"removeComments": true,
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"esModuleInterop": true,
"isolatedModules": true,
"resolveJsonModule": true,
"outDir": "./dist",
"baseUrl": ".",
"paths": {
"@src/*": ["src/*"]
}
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}
// <rootDir>/packages/common/src/index.ts
export const sayHello = () => console.log('Helloworld!');
<rootDir>/services/my-api/package.json
{
"name": "@vercel-monorepo-example/my-api",
"description": "vercel-monorepo-example api",
"version": "0.1.0",
"main": "src/index.ts",
"dependencies": {
"@vercel-monorepo-example/common": "0.1.0",
"express": "^4.17.1"
},
"devDependencies": {
"@types/express": "^4.17.12",
"@vercel/node": "^1.11.1",
"typescript": "^4.3.5"
}
}
<rootDir>/services/my-api/tsconfig.json
Use the same configuration than above (@vercel-monorepo-example/common)
<rootDir>/services/my-api/vercel.json
{
"version": 2,
"github": {
"enabled": false
},
"builds": [{ "src": "src/*.ts", "use": "@vercel/node" }],
"rewrites": [{ "source": "/(.*)", "destination": "/src/index.ts" }]
}
// <rootDir>/services/my-api/src/index.ts
import type { VercelRequest, VercelResponse } from '@vercel/node';
import { sayHello } from '@vercel-monorepo-example/common';
const app = require('express')();
app.get('/', (req: VercelRequest, res: VercelResponse) => {
sayHello();
res.status(200);
res.json({ statusCode: 200 });
});
app.use((req: VercelRequest, res: VercelResponse) => {
res.status(404);
res.json({ statusCode: 404 });
});
export default app;
Vercel-konfigurasjon:
Bygge- og utviklingsinnstillingerer satt tilAndre rammeverk-alternativer, og kommandoene er tydelige.Rotkataloger satt tilservices/my-apiog harInkluder kildefiler utenfor rotkatalogen i byggeprosessen.alternativet merket av.