You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nuxt自定义插件的$encrypt方法提示类型'unknown'的问题求助

Nuxt自定义插件的$encrypt方法提示类型'unknown'的问题求助

我最近在开发Nuxt项目时,想自定义一个加密相关的插件,本来以为流程很顺畅,结果碰到了类型提示的问题,卡了好一阵,想请大家帮忙看看。

我先在项目的plugins/目录下创建了cryptography.ts文件,代码是这样的:

// plugins/cryptography.ts

import CryptoJs from "crypto-js"


export default defineNuxtPlugin(() => {
  return {
    provide: {
      encrypt: (value: string, secret_key: string) => {
        var bytes = CryptoJS.AES.encrypt(value, secret_key).toString();

        return bytes;
      },
      decrypt: (value: string, secret: string) => {
        var decrypted = CryptoJS.AES.decrypt(value, secret).toString(
          CryptoJS.enc.Utf8
        );

        return decrypted;
      },
    },
  };
});

写完插件后,我在一个组件里尝试使用它:

<script setup lang="ts">
 const { $encrypt } = useNuxtApp()
 $encrypt('somekey', 'secretkey')
</script>

结果这里的$encrypt直接报了类型错误:'$encrypt' is of type 'unknown'.ts-plugin(18046)。

为了解决这个问题,我先是在项目根目录创建了.d.ts类型声明文件,内容如下:

declare module "#app" {
  interface NuxtApp {
    $encrypt: any;
  }
}

declare module "vue" {
  interface ComponentCustomProperties {
    $encrypt: any;
  }
}

export {};

但这么做之后问题还是没解决,类型提示依旧是unknown。后来我又尝试把.d.ts文件放到/types/目录下,同时修改了ts-config.json的配置:

{
  // https://nuxt.com/docs/guide/concepts/typescript
  "extends": "./.nuxt/tsconfig.json",
  "compilerOptions": {
    "moduleResolution": "node",
    "baseUrl": ".",
    "target": "ES2022",
    "module": "ESNext",
    "types": ["./types/**/*.d.ts"],
    "paths": {
      "@/*": ["./*"]
    }
  }
}

可折腾了这么久,TypeScript还是识别不到$encrypt的类型,我实在找不到问题出在哪了,有没有朋友能指点一下?万分感谢!

备注:内容来源于stack exchange,提问作者Egy Ramschie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 18:08:03