Usage of standard library is restricted (arkts-limited-stdlib) <ArkTSCheck>

Usage of standard library is restricted (arkts-limited-stdlib) 是 ArkTS 编译器的一项限制,表明你在代码中使用了 ArkTS 标准库中被限制或不支持的 API。ArkTS 是 HarmonyOS/OpenHarmony 的开发语言,它对 JavaScript/TypeScript 标准库进行了裁剪,仅保留了部分核心功能,以确保代码在资源受限的设备上高效运行。

常见受限场景及解决办法

1. 使用了不支持的全局对象或 API

示例错误代码

TypeScript 复制代码
// 错误:使用了 Node.js 专属的全局对象
const fs = require('fs'); // ArkTS 不支持 Node.js 模块

// 错误:使用了浏览器专属的 API
document.getElementById('element'); // ArkTS 不在浏览器环境运行

解决办法

  • 使用 ArkTS 提供的替代 API,例如:
    • 文件操作使用 @ohos.fileio 模块。
    • 界面操作使用 ArkUI 组件(如 TextButton 等)。
2. 使用了不支持的内置对象方法

示例错误代码

TypeScript 复制代码
// 错误:使用了 Array.prototype.flat,ArkTS 可能不支持
const flattened = array.flat();

解决办法

  • 使用兼容的替代方法:

    TypeScript 复制代码
    // 替代方案:手动实现数组扁平化
    const flattened = [];
    array.forEach(item => {
      if (Array.isArray(item)) {
        flattened.push(...item);
      } else {
        flattened.push(item);
      }
    });
3. 使用了不支持的模块或包

示例错误代码

TypeScript 复制代码
// 错误:引入了非 ArkTS 生态的 npm 包
import axios from 'axios'; // ArkTS 无法直接使用 npm 包

解决办法

  • 使用 ArkTS 官方提供的模块或 HarmonyOS SDK 中的 API:

    TypeScript 复制代码
    // 使用 ArkTS 提供的网络请求 API
    import http from '@ohos.net.http';
    
    const httpRequest = http.createHttp();
    httpRequest.request(
      'https://example.com',
      { method: http.RequestMethod.GET },
      (err, response) => {
        if (!err) {
          console.info(`Response: ${response.result}`);
        }
      }
    );
4. 使用了不支持的语法特性

示例错误代码

TypeScript 复制代码
// 错误:使用了动态导入(ArkTS 可能不支持)
const module = await import('./module.js');

解决办法

  • 使用静态导入替代:

    TypeScript 复制代码
    import module from './module.js';

最佳实践

  1. 查阅官方文档 :使用 ArkTS 开发时,优先参考 HarmonyOS 官方文档,确认 API 是否可用。
  2. 避免跨平台依赖:不要直接引入 Node.js 或浏览器专属的 API。
  3. 使用 HarmonyOS SDK 替代方案:大多数常见功能(如网络请求、文件操作、数据库等)都有官方提供的替代模块。