当我在 Hardhat 中运行测试时,我得到了这个问题中提到的错误。
在 Hardhat 文档中,他们建议可以使用@babel/register,它应该可以即时编译 javascript。
当我添加@babel/register
并包含require("@babel/register");
在测试文件中时,该测试文件不再抱怨,但现在 Hardhat 内部的一些东西抱怨。
$ npx hardhat test
An unexpected error occurred:
.../solidity/src/utils/helpers.js:55
export async function aSymbol() {
^^^^^^
SyntaxError: Unexpected token 'export'
at Object.compileFunction (node:vm:352:18)
at wrapSafe (node:internal/modules/cjs/loader:1031:15)
at Module._compile (node:internal/modules/cjs/loader:1065:27)
at Module._compile (/Users/dan/work/lore/lore/solidity/node_modules/pirates/lib/index.js:136:24)
at Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Object.newLoader [as .js] (/Users/dan/work/lore/lore/solidity/node_modules/pirates/lib/index.js:141:7)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
如何使用 Babel 和 Hardhat 正确编译 ESModuleimport
以用于使用 CommonJS 的 Hardhat 测试require
?