Error: Cannot find module 'jose' in node js

Error: Cannot find module 'jose' in node js

我安装了模块。只有这个模块不工作,其他模块工作正常。当我尝试 运行 它抛出以下错误

Error: Cannot find module 'jose'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:582:15)
    at Function.Module._load (internal/modules/cjs/loader.js:508:25)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (<my_folder>\test.js:1:100)     
    at Module._compile (internal/modules/cjs/loader.js:701:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)   
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
    at Function.Module._load (internal/modules/cjs/loader.js:531:3)

我尝试了什么:

几乎一切都来自这个Whosebug question

  1. 删除节点模块文件夹并重新安装

  2. 清除缓存并重新安装

  3. 已安装npm install @types/node --save-dev

我的package.json

{
  "name": "test-api",
  "version": "1.0.0",
  "description": "",
  "scripts": {
    "start": "func start",
    "test": "echo \"No tests yet...\""
  },
  "dependencies": {
    "axios": "^0.21.0",
    "axios-retry": "^3.1.9",
    "fs-extra": "^9.0.1",
    "qs": "^6.9.4"
  },
  "devDependencies": {
    "@types/node": "^14.14.10",
    "jose": "^3.1.3"
  }
}

也许你应该使用 npm install --save-dev jose 来安装 jose :D

jose 包导出单独的 ESM 模块,例如,您正在安装的版本 3.x 中没有根 jose 模块。您可以在项目的 documentation

中阅读如何 require/import 每个单独的模块

更新您的 NodeJS 运行时。为我解决了这个问题。

我解决了这个问题,反应如下

import { jwtVerify } from 'jose/dist/browser/jwt/verify'

如果您使用的是 Nuxt,您可以通过将类型添加到 nuxt.config.js 中的构建转译选项中来解决此错误,如下所示:

 build: {
        transpile: ['@jose/dist/types']
    },

在此之后,我可以像这样从 Jose 导入所有内容:

import {jwtVerify, importSPKI} from "jose";

这样做会给你完整的类型描述和一切!