故障排除
以下是一些尝试和检查事项,如果您在使用 create-plugin
或 sign-plugin
工具时遇到问题。
我得到:检测到不支持的操作系统 'Windows'。请使用 WSL 与 create-plugin 一起使用
create-plugin
工具不支持原生 Windows。如果您使用 Windows,您必须安装 WSL 2 以使用 create-plugin
。WSL 2 是 Windows 子系统 for Linux 架构的新版本,允许您在 Windows 上运行 ELF64 Linux 二进制文件。
我使用 Windows 和 WSL,但我仍然得到 检测到不支持的操作系统 'Windows'。
请确保您正在使用 WSL 终端。仅安装 WSL 在 Windows 上是不够的;您需要设置您的 WSL 环境。
要检查您是否正在使用 WSL 终端,请运行以下命令:uname -a
。此命令应返回类似以下内容:
Linux ....-microsoft-standard-WSL2 #... GNU/Linux
如果您收到错误或不同的输出,您不是在使用 WSL 终端。
我可以确认我正在 WSL 终端内,但我仍然得到 检测到不支持的操作系统 'Windows'。
您必须在WSL环境中安装Node.js。您可以在Microsoft的文档中找到安装指南。我们建议安装Node.js的最新LTS版本。
我在WSL中安装了Node.js,但我仍然收到检测到不支持的操作系统 'Windows'
的错误。
可能您在WSL中安装了Node.js,但您没有使用最新的LTS版本。此外,WSL可能存在一个问题,可能会选择Windows的二进制文件并尝试运行它们。这意味着即使您在WSL终端中,您也可能正在运行一个不受create-plugin
支持的Windows二进制文件。
您可以这样做:
- 通过运行
node --version
检查您是否正在使用Node.js版本18或更高版本。 - 通过运行以下命令检查您是否正在使用Node.js和npx的Linux二进制文件:
which node
和which npx
(注意命令是which
,而不是node --version
)。您应该收到类似/usr/bin/node
和/usr/bin/npx
的输出。如果这些命令的输出类似于..../Program Files/nodejs/npx
,这意味着您正在使用错误的二进制文件,应该安装或重新安装Node.js。 - 您可以按照Microsoft指南正确安装Node.js。
如果您使用sudo apt install nodejs
安装了Node.js,但没有遵循任何指南或更改APT仓库,那么您很可能没有使用最新的Node.js LTS。
当我用新创建的插件打开Grafana时,Grafana无法加载该插件。
- 首先,尝试重启Grafana以确保它检测到新插件。
- 如果您使用的是原生Windows(没有WSL),则需要使用WSL。`create-plugin`工具不支持原生Windows。
当我在我插件中运行npm run build
或npm run dev
时,我没有看到我的更改。
如果您使用挂载来访问您的文件,那么webpack可能无法检测到您的文件更改。在WSL和Windows文件系统之间工作,处理文件存储和性能可能会出现问题。这个问题与`create-plugin`无关,而是与WSL和Windows的运行方式有关。
您可以这样做:
- 如果您从原生Windows应用程序(如VS Code)编辑代码,每次您想要在插件中看到更改时,都需要手动重新运行
yarn build
。 - 在您的项目中使用 webpack
watchOption
的poll
。在我们的文档中查找如何扩展webpack配置的说明。
当运行Jest或npm run test
时,我遇到SyntaxError: Cannot use import statement outside a module
错误。
当前Jest配置中存在的一个常见问题是导入了一个只提供ESM构建的npm包。这些包会导致Jest因SyntaxError: Cannot use import statement outside a module
而报错。
为了解决这个问题,我们提供了一份已知包列表,可以将其传递给Jest配置属性[transformIgnorePatterns](https://jest.node.org.cn/docs/configuration#transformignorepatterns-arraystring)
。
如果需要,可以通过以下方式扩展
process.env.TZ = 'UTC';
const { grafanaESModules, nodeModulesToTransform } = require('./.config/jest/utils');
module.exports = {
// Jest configuration provided by @grafana/create-plugin
...require('./.config/jest.config'),
// Inform Jest to only transform specific node_module packages.
transformIgnorePatterns: [nodeModulesToTransform([...grafanaESModules, 'packageName'])],
};
在运行docker compose up
或npm run server
后,我遇到了"image with reference <plugin-name> was found but does not match the specified platform: wanted linux/amd64, actual: linux/arm64/v8"
错误。
此错误最可能影响使用苹果硅Mac电脑的用户。如果您在v1.12.2之前使用create-plugin
构建了插件脚手架的图像,那么如果未删除旧图像,运行docker compose up
可能会失败并显示上述消息。
您可以采取以下措施:
- 运行
docker compose down
停止并删除容器。 - 使用
docker rmi <plugin-name>
删除图像。 - 运行
docker compose up
或npm run server
。