首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Jest测试中需要库子模块时找不到

在Jest测试中需要库子模块时找不到
EN

Stack Overflow用户
提问于 2022-11-19 04:17:54
回答 1查看 35关注 0票数 1

我目前正试图为一个基于节点的GCP云函数应用程序编写一些测试。

在这一点上,我已经把它简化到了最低限度:

代码语言:javascript
复制
// index.js
const functions = require("@google-cloud/functions-framework");
const testing = require('@google-cloud/functions-framework/testing');


functions.http("updateProvider",
  (req, res) => { res.send("OK"); });

我的测试文件遵循示例这里

代码语言:javascript
复制
// index.spec.js
const {getFunction} = require('@google-cloud/functions-framework/testing');
require('../../');

describe("HelloTests", () => {
  test("is testable", () => {

  });
});

当我运行jest时,会得到以下错误:

Cannot find module '@google-cloud/functions-framework/testing' from 'spec/unit/index.spec.js'

一些补充意见:

  1. 如果我将导入语句放入index.js并运行应用程序,那么它导入就会很好。
  2. 如果我注释掉来自index.spec.js的导入语句,但将其保留在index.js中并运行jest,则在index.js中导入时会得到相同的错误。

这导致我假设Jest没有正确地处理子模块。我以前从未使用过这样的子模块(我还记得),所以我完全不知所措。我做了一些调查,这是来自functions-framework节点模块的package.js

代码语言:javascript
复制
  "exports": {
    ".": {
      "types": "./build/src/index.d.ts",
      "default": "./build/src/index.js"
    },
    "./testing": {
      "types": "./build/src/testing.d.ts",
      "default": "./build/src/testing.js"
    }
  },

不知道这是否相关,但希望包括它,以防它是有用的。

知道我为什么要得到这个错误和/或如何在不切换到ESM的情况下解决它吗?

更新:我切换到ESM并得到完全相同的错误。

EN

回答 1

Stack Overflow用户

发布于 2022-11-21 17:45:00

这显然是今年早些时候修好的:

发行:https://github.com/facebook/jest/issues/9771

初始发布:https://github.com/facebook/jest/releases/tag/v28.0.0-alpha.3

我复制了一个更老的(但仍然是最近的!)package.json卡在v27上,所以它没有选择最新的库。做了一个干净的安装,并确认没有进一步的问题,至少v29.3.1

菜鸟的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74497518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档