JS 代码在节点上下文中 运行 时工作,但在控制台中未捕获 ReferenceError
JS code working when ran in a node context but Uncaught ReferenceError in console
安装的 Npm 依赖项没有任何问题,这是我正在尝试的代码 运行:
const { createAlchemyWeb3 } = require("@alch/alchemy-web3");
const web3 = createAlchemyWeb3(
"https://eth-mainnet.alchemyapi.io/v2/1aZ1ZWH9087FqTnSSr7TI8ACFFgsIbcF"
)
async function main() {
const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
const web3 = createAlchemyWeb3("https://eth-mainnet.alchemyapi.io/v2/1aZ1ZWH9087FqTnSSr7TI8ACFFgsIbcF")
const blockNumber = await web3.eth.getBlockNumber()
console.log("My first exercise! The latest block number is " + blockNumber)
}
main()
在浏览器中加载它时,我收到未捕获的引用错误,但是当 运行使用 node 在命令行中运行脚本文件时,一切都按预期工作。
这是什么原因造成的? TIA :)
看完教程后 link 我相当确信您拥有的代码不适用于浏览器。您拥有的是 node.js 的代码。具体来说,浏览器不理解require()
.
如果您使用 Webpack 或 Browserify 之类的东西,就有可能使您编写的内容在浏览器上运行 - 这些是 javascript 编译器,可将 javascript 编译为 javascript。乍一看这可能看起来很奇怪,如果您正在编写 javascript 那么为什么要将其编译为 javascript?嗯,他们允许您做的一件事是使用您的浏览器可能不支持的一些功能,例如 require()
或新提议的语言功能。
但是,我不会走那条路。相反,我鼓励您阅读 alchemy-web3
文档,因为我认为这是 javascript 开发人员需要学习的一项重要技能。
如果您 google “alchemy-web3” 最热门的结果之一就是 github 页面:https://github.com/alchemyplatform/alchemy-web3. Go to the github page and have a quick read. Alternatively (and I do this more often than google) you can go to https://www.npmjs.com/ and search for "alchemy-web3". You will get this page: https://www.npmjs.com/package/@alch/alchemy-web3
它们都是同一个页面,但 npmjs 不会给出不是 javascript 库的结果。如果你浏览一下 alchemy-web3 页面,你会看到一些如何使用它的例子。这就是为什么我认为学习查找和阅读库文档是 javascript 程序员的一项重要技能 - 因为与大多数其他语言不同,大多数 javascript 库往往有很好的手写文档。
如果您阅读文档,您将了解如何在浏览器中使用它。您可以在脚本标签中包含 alchemy-web3 库,而不是执行 require()
:
<!DOCTYPE html>
<!-- Name this file something like Testing.html: -->
<!-- In HTML we do this instead of require() -->
<script src="https://cdn.jsdelivr.net/npm/@alch/alchemy-web3@latest/dist/alchemyWeb3.min.js"></script>
<script>
// Now your script:
const web3 = AlchemyWeb3.createAlchemyWeb3(
"https://eth-mainnet.alchemyapi.io/v2/1aZ1ZWH9087FqTnSSr7TI8ACFFgsIbcF"
)
async function main() {
const web3 = AlchemyWeb3.createAlchemyWeb3("https://eth-mainnet.alchemyapi.io/v2/1aZ1ZWH9087FqTnSSr7TI8ACFFgsIbcF")
const blockNumber = await web3.eth.getBlockNumber()
console.log("My first exercise! The latest block number is " + blockNumber)
// In the browser you can also output to the DOM:
document.body.innerHTML += "My first exercise! The latest block number is " + blockNumber
}
main()
</script>
注意:如文档中所述,在浏览器中使用AlchemyWeb3.createAlchemyWeb3()
安装的 Npm 依赖项没有任何问题,这是我正在尝试的代码 运行:
const { createAlchemyWeb3 } = require("@alch/alchemy-web3");
const web3 = createAlchemyWeb3(
"https://eth-mainnet.alchemyapi.io/v2/1aZ1ZWH9087FqTnSSr7TI8ACFFgsIbcF"
)
async function main() {
const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
const web3 = createAlchemyWeb3("https://eth-mainnet.alchemyapi.io/v2/1aZ1ZWH9087FqTnSSr7TI8ACFFgsIbcF")
const blockNumber = await web3.eth.getBlockNumber()
console.log("My first exercise! The latest block number is " + blockNumber)
}
main()
在浏览器中加载它时,我收到未捕获的引用错误,但是当 运行使用 node 在命令行中运行脚本文件时,一切都按预期工作。
这是什么原因造成的? TIA :)
看完教程后 link 我相当确信您拥有的代码不适用于浏览器。您拥有的是 node.js 的代码。具体来说,浏览器不理解require()
.
如果您使用 Webpack 或 Browserify 之类的东西,就有可能使您编写的内容在浏览器上运行 - 这些是 javascript 编译器,可将 javascript 编译为 javascript。乍一看这可能看起来很奇怪,如果您正在编写 javascript 那么为什么要将其编译为 javascript?嗯,他们允许您做的一件事是使用您的浏览器可能不支持的一些功能,例如 require()
或新提议的语言功能。
但是,我不会走那条路。相反,我鼓励您阅读 alchemy-web3
文档,因为我认为这是 javascript 开发人员需要学习的一项重要技能。
如果您 google “alchemy-web3” 最热门的结果之一就是 github 页面:https://github.com/alchemyplatform/alchemy-web3. Go to the github page and have a quick read. Alternatively (and I do this more often than google) you can go to https://www.npmjs.com/ and search for "alchemy-web3". You will get this page: https://www.npmjs.com/package/@alch/alchemy-web3
它们都是同一个页面,但 npmjs 不会给出不是 javascript 库的结果。如果你浏览一下 alchemy-web3 页面,你会看到一些如何使用它的例子。这就是为什么我认为学习查找和阅读库文档是 javascript 程序员的一项重要技能 - 因为与大多数其他语言不同,大多数 javascript 库往往有很好的手写文档。
如果您阅读文档,您将了解如何在浏览器中使用它。您可以在脚本标签中包含 alchemy-web3 库,而不是执行 require()
:
<!DOCTYPE html>
<!-- Name this file something like Testing.html: -->
<!-- In HTML we do this instead of require() -->
<script src="https://cdn.jsdelivr.net/npm/@alch/alchemy-web3@latest/dist/alchemyWeb3.min.js"></script>
<script>
// Now your script:
const web3 = AlchemyWeb3.createAlchemyWeb3(
"https://eth-mainnet.alchemyapi.io/v2/1aZ1ZWH9087FqTnSSr7TI8ACFFgsIbcF"
)
async function main() {
const web3 = AlchemyWeb3.createAlchemyWeb3("https://eth-mainnet.alchemyapi.io/v2/1aZ1ZWH9087FqTnSSr7TI8ACFFgsIbcF")
const blockNumber = await web3.eth.getBlockNumber()
console.log("My first exercise! The latest block number is " + blockNumber)
// In the browser you can also output to the DOM:
document.body.innerHTML += "My first exercise! The latest block number is " + blockNumber
}
main()
</script>
注意:如文档中所述,在浏览器中使用AlchemyWeb3.createAlchemyWeb3()