导入“@terra-money/terra.js”抛出未捕获的类型错误(无法解析模块说明符)

Importing "@terra-money/terra.js" throws Uncaught TypeError (Failed to resolve module specifier)

我想使用 Terra.js 存储库中的示例代码,我将其放入名为 terra-test.js 的文件中:

import { LCDClient, Coin } from '@terra-money/terra.js';

// connect to bombay testnet
const terra = new LCDClient({
  URL: 'https://bombay-lcd.terra.dev',
  chainID: 'bombay-12',
});

// To use LocalTerra
// const terra = new LCDClient({
//   URL: 'http://localhost:1317',
//   chainID: 'localterra'
// });

// get the current swap rate from 1 TerraUSD to TerraKRW
const offerCoin = new Coin('uusd', '1000000');
terra.market.swapRate(offerCoin, 'ukrw').then(c => {
  console.log(`${offerCoin.toString()} can be swapped for ${c.toString()}`);
});

但是当我想通过index.html

调用脚本函数时
<html>
<head>
<title>Terra.js Test</title>
</head>
<body>
<script type="module" src="terra-test.js"></script>
</body>
</html>

...我收到此错误:

Uncaught TypeError: Failed to resolve module specifier "@terra-money/terra.js". Relative references must start with either "/", "./", or "../".

有人能指出我正确的方向吗?非常感谢!

您是否通过 npm 包管理器安装了模块? npm 安装@terra-money/terra.js

如果您只是想体验您分享的 TerraJS 示例,那么 运行 从命令行使用 NodeJS(当然是在 npm 安装模块之后)

浏览器中的“最新”JavaScript运行ning 与 NodeJS 运行ning JavaScript 从命令行或作为服务器。最大的挑战是模块、导入、依赖和打包。

我使用 TerraJS 工作的所有用户界面示例都使用了 React 和 create-react-app 甚至 NextJS。它使用 Babel 和 Webpack 打包节点模块以在浏览器中工作(例如从 index.html 开始工作,尤其是当模块中存在依赖关系时)。题外话但相关,我最近一直在尝试使用 browserfy 完成的另一个项目(与 Terra 无关)这是另一个早期项目,试图帮助打包模块并允许它们在浏览器中工作。

我的建议是在您的 TerraJS 前端和用户界面开发中采用 React。并拥抱 NodeJS 直接使用 TerraJS 库。