错误与代码库有关(我正在使用的代码库monorepo
位于vercel.json
根目录中)。在vercel.js
与react
应用程序一起打包后,一切工作正常。
我有一个简单的React.js
应用程序,带有wouter
基于 - 的路由和Vercel
部署,这让我遇到了一个小问题,我不知道解决方案。404
它总是在刷新(子页面)后返回。
我的代码看起来有点像这样。
<>
<Route path='/' component={Intro} />
<Route path='/dashboard' component={Dashboard} />
</>
Run Code Online (Sandbox Code Playgroud)
<Intro />
我<Link />
必须/dashboard
将我转到哪个<Dashboard />
页面。它确实可以在我的本地计算机、容器中以及基于 Linux 的部署中运行,但在vercel
部署中却无法真正运行,即使我尝试通过vercel.json
.
<>
<Route path='/' component={Intro} />
<Route path='/dashboard' component={Dashboard} />
</>
Run Code Online (Sandbox Code Playgroud)
还尝试了替代版本rewrites
,但仍然存在相同的问题。
{
"github": {
"silent": true
},
"rewrites": [
{
"source": "(.*)",
"destination": "/index.html"
}
]
}
Run Code Online (Sandbox Code Playgroud)
此处提供的实时部署链接:pointrest-6ttd9zep8-araclx.vercel.app …
我一直在设置一个 monorepo,目标是创建一个共享组件库以用于多个不同的 Next.js 应用程序(按照此示例),但是每当我从共享库导入组件时,我都会得到
Unhandled Runtime Error
Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See https://reactjs.org/link/invalid-hook-call for tips about how to …
Run Code Online (Sandbox Code Playgroud) 我的用例是,我有两个工作区,例如foo
和bar
,并且我想传递不同的命令行参数,是否可以使用 Turborepo 实现此类功能。
我想做这样的事情:
turbo run dev --filter="foo" -- --env=dev --filter="bar" -- --env=local
Run Code Online (Sandbox Code Playgroud) 我有一个基于 Turborepo 的 monorepo,其中有一个主 TypeScript 应用程序(称为@myscope/tsapp
),它使用同一存储库中的另一个 TypeScript 包(称为@myscope/tspackage
)。您可以在这里找到我为此问题创建的示例存储库:https://github.com/sigalor/typescript-transpile-workspace-packages
该文件apps/tsapp/src/index.ts
如下所示:
import { sum } from "@myscope/tspackage";\n\nconsole.log("The sum is:", sum(2, 3));\n
Run Code Online (Sandbox Code Playgroud)\n该文件packages/tspackage/src/index.ts
仅包含以下内容:
export function sum(a: number, b: number): number {\n return a + b;\n}\n
Run Code Online (Sandbox Code Playgroud)\n现在npm run dev
在存储库的根目录中运行会产生以下结果:
> typescript-transpile-workspace-packages@0.0.0 dev\n> turbo run dev\n\n\xe2\x80\xa2 Packages in scope: @myscope/tsapp, @myscope/tsconfig, @myscope/tspackage\n\xe2\x80\xa2 Running dev in 3 packages\n\xe2\x80\xa2 Remote caching disabled\n@myscope/tsapp:dev: cache bypass, force executing 0f1217618b24762f\n@myscope/tsapp:dev: \n@myscope/tsapp:dev: > @myscope/tsapp@0.0.0 …
Run Code Online (Sandbox Code Playgroud) I\xe2\x80\x99ve 使用 Turborepo 创建了一个 monorepo,其中包含 2 个 SvelteKit 应用程序和 2 个包:一个组件库(也基于 SvelteKit)和一个配置包。
\nroot\n|\n|- packages\n| |- component-library\n| `- config\n|\n`- apps\n |- app1\n `- app2\n
Run Code Online (Sandbox Code Playgroud)\n配置包包含 Tailwind 和 PostCSS 配置文件,它们在组件库和两个应用程序中使用。
\n我的问题是,从组件库导入的组件在app1中正确显示,但app2中的 Tailwind 类似乎存在问题。有些课程存在,但有些则不存在。I\xe2\x80\x99m 在 JIT 模式下使用 Tailwind。
\n使用的包的版本:
\n"turbo": "^1.2.4",\n"svelte": "^3.34.0",\n"@sveltejs/kit": "1.0.0-next.316",\n"tailwindcss": "3.0.23",\n
Run Code Online (Sandbox Code Playgroud)\n我\xe2\x80\x99m 甚至不确定这是否是因为 SvelteKit,但如果有人有类似 Turborepo-SvelteKit-Tailwind 设置的经验,我将不胜感激。
\n我有一个 monorepo,它具有非常基本的设置,可用于在此处重现此问题:
它是一个单一的 Nestjs 应用程序,有 2 个从中读取数据的包。
@nestjs/core
包和主应用程序都需要其他依赖项才能工作,并且不仅在它们自己的本地 package.json 上而且与resolutions {}
主 package.json 中的配置强制为完全相同的固定版本。
我可以检查锁定文件并发现,虽然使用了相同的版本,但哈希值不同,导致了 Nestjs 的重大问题,无法可靠地导入可注入依赖项,导致它在引导程序上中断。
有办法防止这种情况吗?强制链接完全相同的哈希/依赖项?
使用 npm,您可以像这样传递随机参数:
npm run build --foo="bar"
Run Code Online (Sandbox Code Playgroud)
然后您可以foo
通过以下方式访问值:
process.env.npm_config_foo
Run Code Online (Sandbox Code Playgroud)
是否可以用 pnpm 做同样的事情?我查看了他们的文档,但找不到任何相关内容。我尝试了类似的方法,但出现未知标志错误
pnpm build --foo=bar
Run Code Online (Sandbox Code Playgroud) 这是使用turborepo 的nestjs 真正简单的monorepo 的样子:
\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 apps\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 nest\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 nest-cli.json\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app.controller.spec.ts\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app.controller.ts\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app.module.ts\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app.service.ts <---- importing class here\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.ts\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 test\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app.e2e-spec.ts\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 jest-e2e.json\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tsconfig.build.json\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tsconfig.json\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 packages\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 lib\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.ts <------- exporting class here\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tsconfig.json\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pnpm-lock.yaml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pnpm-workspace.yaml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 turbo.json\n
Run Code Online (Sandbox Code Playgroud)\n类在 中定义packages/lib/index.ts
,然后在 中导入apps/nest/src/app.service.ts
。
但这样做会在尝试导入时导致以下错误index.ts
:
nest:dev: …
Run Code Online (Sandbox Code Playgroud) 我有一个monorepo
用turborepo 创建的,其中包含两个next.js
应用程序。结构如下
base
|---apps
| |---editor
| | |---pages
| | |---index.js //this file is different in both apps
| | |---anotherPage.js //this is the same file in both apps
| |
| |---etsy
| |---pages
| |---index.js //this file is different in both apps
| |---anotherPage.js //this is the same file in both apps
|
|---package
Run Code Online (Sandbox Code Playgroud)
在Next JS中,有自动路由。所以当我转到 时url/otherPage
,它会自动重定向到该otherPage.js
页面。我在应用程序之间有很多通用页面。目录里还有一堆常用的API pages/api
。如何制作一个系统,将这些共享页面保存在packages
目录下,同时仍然保留自动路由和 api 路由。
我正在尝试按照https://turbo.build/repo/docs/handbook/tools/storybook指南使用 Storybook (我正在使用pnpm
)。
应用程序/workshop/package.json
\n{\n "name": "workshop",\n "private": true,\n "version": "0.0.0",\n "type": "module",\n "scripts": {\n "dev": "storybook dev -p 6006",\n "build": "storybook build",\n "preview": "vite preview"\n },\n "dependencies": {\n "ui": "workspace:^",\n "react": "^18.2.0",\n "react-dom": "^18.2.0"\n },\n "devDependencies": {\n "@storybook/addon-essentials": "^7.0.2",\n "@storybook/addon-interactions": "^7.0.2",\n "@storybook/addon-links": "^7.0.2",\n "@storybook/blocks": "^7.0.2",\n "@storybook/cli": "^7.0.2",\n "@storybook/react": "^7.0.2",\n "@storybook/react-vite": "^7.0.2",\n "@storybook/testing-library": "^0.0.14-next.2",\n "@types/react": "^18.0.28",\n "@types/react-dom": "^18.0.11",\n "@vitejs/plugin-react-swc": "^3.0.0",\n "prop-types": "^15.8.1",\n "storybook": "^7.0.2",\n "typescript": "^4.9.3",\n "vite": "^4.2.0"\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n应用程序/workshop/.storybook/main.ts
\nimport type …
Run Code Online (Sandbox Code Playgroud)