NodeJS 使用Vite + Vitest无法进行React测试

jqjz2hbq  于 12个月前  发布在  Node.js
关注(0)|答案(3)|浏览(131)

运行npm test(调用vitest)时出现以下错误:
失败src/Applications/components/ApplicationsTable/ApplicationsTable.test.tsx [ src/Applications/components/ApplicationsTable/ApplicationsTable.test.tsx ]错误:不支持目录导入“{internalNpmPackage}/build/components”解析从{internalNpmPackage}/build/index.js导入的ES模块s序列化错误:{ code:'ERR_UNEPORTED_IMPORT',url:'文件:/Users/me/{myProject}/node_modules/{internalNpmProject}/build/components' }
其中'internalNpmPackage'是一个内部npm包(共享的react组件库),'myProject'是我正在测试的react项目。
该项目运行良好的vite,它只是测试我得到这个问题。
'internalNpmPackage'是一个react组件的集合,这些组件在为项目服务时被导出并导入。
我正在使用React,TS,Vite和Vitest。
当我在本地链接这些包时(使用Yalc,类似于npm link -它工作得很好)

0sgqnhkj

0sgqnhkj1#

如果尚未导入目录索引,请尝试导入。如果当前的导入语句是import { component1, component2} from '{internalNpmPackage}/build/components'
试着把它改成
import { component1, component2} from '{internalNpmPackage}/build/components/index.js'
参考-https://nodejs.org/api/esm.html#mandatory-file-extensions
如果上述解决方案不适用于您,请分享导致错误的导入语句,内部包的package.json以及项目的文件夹结构

pkwftd7m

pkwftd7m2#

如果您还没有在TypeScript项目中使用ts-jest,请考虑切换到它,以便更好地与Jest中的TypeScript兼容。

npm install --save-dev ts-jest

字符串
您可以在文档https://jestjs.io/docs/getting-started中查看详细信息

zed5wv10

zed5wv103#

解决这个问题的方法是在vite config中添加“test”:

server: {
    deps: {
      inline: ['{internalNpmPackage}'],
    },
  },

字符串
根据vite docs:

  • Vite将处理内联模块。这可能有助于处理以ESM格式发布的.js包(Node无法处理)。*

相关问题