storybook [Bug]: 不变量失败:预期在"undefined"包中定义package.json#版本

mec1mxoz  于 3个月前  发布在  其他
关注(0)|答案(6)|浏览(36)

描述bug

在将项目从storybook 7升级到8时,我注意到服务器不再工作,出现了以下错误:

Error: Invariant failed: Expected package.json#version to be defined in the "undefined" package}
    at invariant (/home/jojoxd/Development/<PROJECT>/node_modules/@storybook/core/dist/core-server/index.cjs:187629:11)
    at buildDevStandalone (/home/jojoxd/Development/<PROJECT>/node_modules/@storybook/core/dist/core-server/index.cjs:189878:3)
    at Object.build (/home/jojoxd/Development/<PROJECT>/node_modules/@storybook/core/dist/core-server/index.cjs:190006:12)
    at runInstance (/home/jojoxd/Development/<PROJECT>/node_modules/@nx/storybook/src/executors/storybook/storybook.impl.js:26:18)
    at storybookExecutor (/home/jojoxd/Development/<PROJECT>/node_modules/@nx/storybook/src/executors/storybook/storybook.impl.js:12:26)
    at storybookExecutor.next (<anonymous>)
    at getLastValueFromAsyncIterableIterator (/home/jojoxd/Development/<PROJECT>/node_modules/nx/src/utils/async-iterator.js:15:34)
    at iteratorToProcessStatusCode (/home/jojoxd/Development/<PROJECT>/node_modules/nx/src/command-line/run/run.js:44:94)
    at /home/jojoxd/Development/<PROJECT>/node_modules/nx/src/command-line/run/run.js:187:16
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

看起来这个更改是错误的,因为应该读取package.json的内容,而不是获取dirname。

复现链接

https://example.com/there-is-no-reproduction

复现步骤

  • 无响应*

系统

Storybook Environment Info:

  System:
    OS: Linux 6.8 Ubuntu 24.04 LTS 24.04 LTS (Noble Numbat)
    CPU: (8) x64 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz
    Shell: 5.9 - /usr/bin/zsh
  Binaries:
    Node: 20.12.2 - ~/.nvm/versions/node/v20.12.2/bin/node
    npm: 10.5.0 - ~/.nvm/versions/node/v20.12.2/bin/npm <----- active
  npmPackages:
    @storybook/addon-essentials: 8.2.2 => 8.2.2 
    @storybook/addon-interactions: 8.2.2 => 8.2.2 
    @storybook/core-server: 8.2.2 => 8.2.2 
    @storybook/jest: ^0.2.3 => 0.2.3 
    @storybook/test-runner: ^0.19.1 => 0.19.1 
    @storybook/testing-library: ^0.2.2 => 0.2.2 
    @storybook/vue3-vite: 8.2.2 => 8.2.2

附加上下文

此NX问题相关: nrwl/nx#26914

ds97pgxw

ds97pgxw1#

免责声明:由于信息是自动生成的,可能存在不准确的情况。为了解决这个问题,请修改 core-server 模块以正确读取 package.json 版本。具体来说,更新 index.tsutils/package-json.ts 文件。

  1. index.ts:确保 package.json 被正确读取。
import { readPackageJson } from './utils/package-json';

const packageJson = readPackageJson(dirname);
const version = packageJson.version;
if (!version) {
  throw new Error(`Invariant failed: Expected package.json#version to be defined in the "${dirname}" package`);
}
  1. utils/package-json.ts:实现一个函数来读取 package.json
import fs from 'fs';
import path from 'path';

export function readPackageJson(dirname: string) {
  const packageJsonPath = path.join(dirname, 'package.json');
  if (!fs.existsSync(packageJsonPath)) {
    throw new Error(`package.json not found in ${dirname}`);
  }
  return JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
}
关于 Greptile

此响应为您提供了一个研究起点,而非精确解决方案。
帮助我们改进!如果这有帮助,请留下一个 👍,如果无关紧要,请留下一个 👎。

q3aa0525

q3aa05252#

抱歉给您带来麻烦!看起来我们在8.2中破坏了nx的集成。我们本周晚些时候会与nx团队会面以解决这个问题。在此期间,如果您升级到8.1,我认为您应该没问题(尽管据我所知,nx对8.x的支持尚未正式发布)。

kxkpmulp

kxkpmulp3#

抱歉给您带来了麻烦!看起来我们在8.2中破坏了nx的集成。我们本周晚些时候会与nx团队开会解决这个问题。在此期间,如果您升级到8.1,我认为您应该没问题(尽管据我所知,nx对8.x的支持尚未正式发布)。

@shilman 补充一下,只有在提供Storybook(启动命令)时才会出现这种情况,storybook build仍然可以正常工作,没有任何问题。

polhcujo

polhcujo4#

作为解决方法,您也可以尝试将 storybook 包添加为项目的开发依赖项。

xeufq47z

xeufq47z5#

@shilman 我在一段时间前将 storybook 包作为开发依赖项。作为解决方法,我使用 npm patch-package 对 @storybook/core 进行修补,以恢复 @bakervos 提到的影响更改。

u0njafvf

u0njafvf6#

在进行nx迁移后,是否存在解决此问题的方法?

相关问题