node.js - 如何使用 Node 16 在 Cypress 9 中导入插件?
问题描述
我正在努力尝试将外部库导入插件文件。
如果我做
const clipboardy = require('clipboardy')
它说“错误 [ERR_REQUIRE_ESM]:不支持来自 /[...]/e2e/cypress/plugins/index.js 的 ES 模块 /[...]/e2e/node_modules/clipboardy/index.js 的 require()。 ”。我也试过
import clipboardy from 'clipboardy'
但这仍然行不通。实在不明白怎么解决。
你能帮我么?我node 16.10
先cypress 9.0.0
谢谢了
编辑:插件文件
const clipboardy = require("clipboardy");
const csv = require("node-xlsx").default;
const fs = require("fs");
const { lighthouse, pa11y, prepareAudit } = require("cypress-audit");
module.exports = (on, config) => {
on("task", {
parseXlsx({ filePath }) {
return new Promise((resolve, reject) => {
try {
const jsonData = csv.parse(fs.readFileSync(filePath));
resolve(jsonData);
} catch (e) {
reject(e);
}
});
},
getClipboard() {
return clipboardy.readSync();
},
lighthouse: lighthouse(lighthouseReport => {
const categories = lighthouseReport.lhr.categories;
const audits = lighthouseReport.lhr.audits;
const formattedAudit = Object.keys(audits).reduce(
(metrics, curr) => ({
...metrics,
[curr]: audits[curr].numericValue
}),
{}
);
const formattedCategories = Object.keys(categories).reduce(
(metrics, curr) => ({
...metrics,
[curr]: categories[curr].score * 100
}),
{}
);
const results = {
url: lighthouseReport.lhr.requestedUrl,
...formattedCategories
};
console.log("Lighthouse results: [");
console.log(results);
console.log("]");
// fs.writeJSONSync("../results/audit.json", results);
// fs.writeFileSync(
// "audit.json",
// Buffer.from(JSON.stringify(results), "utf8")
// );
}),
pa11y: pa11y(pa11yReport => {
console.log("pa11y results: [");
console.log(pa11yReport);
console.log("]");
})
});
on("before:browser:launch", (browser, launchOptions) => {
prepareAudit(launchOptions);
if (browser.name === "chromium") {
launchOptions.args.push(
"--disable-features=CrossSiteDocumentBlockingIfIsolating,CrossSiteDocumentBlockingAlways,IsolateOrigins,site-per-process"
);
launchOptions.args.push(
"--load-extension=cypress/extensions/Ignore-X-Frame-headers_v1.1"
);
launchOptions.args.push("--disable-dev-shm-usage");
return launchOptions;
}
return launchOptions;
});
return config;
};
解决方案
问题与 ti 剪贴板有关,它在版本 3 中变成了仅 ES 模,与赛普拉斯不兼容。降级到 v2.3 解决了这个问题
推荐阅读
- python - 如何让 Python 使用不同输入变量的列表多次打印出方程的答案?
- javascript - 如何在我的 VueJS / Vuetify 组件中打开和关闭多个 v-menus?
- microsoft-teams - 从消息扩展 (composeExtension/submitAction) 命令将自适应卡插入到撰写框时出错
- pointers - 在 Delphi 中将整数转换为浮点数
- javascript - 单击离开时如何删除“活动”类的导航栏?
- wordpress - Woocommerce 类别和子类别列表
- docker - Docker VS 代码删除 devcontainer
- sql - SQL - 你如何使用 WHERE 而不是 LEFT/RIGHT JOIN?
- algorithm - 哪种数据结构有效地支持给定的操作
- regex - 使用正则表达式动态更改根目录