升级到 monaco-editor 0.21.0 后,在玩笑测试中出现“标识符‘全局’已在compileFunction中声明”错误

Ome*_*mer 6 jestjs monaco-editor

我升级了我的 React 项目以使用 monaco-editor 版本 0.21.0,从那时起,对导入 monaco-editor 的文件的玩笑测试开始失败,并出现以下错误:

\n
\xe2\x97\x8f Test suite failed to run\n\n/Users/omerharoon/Documents/code/packages/webapp/node_modules/monaco-editor/esm/vs/editor/editor.api.js:20\nconst global = self; // Set defaults for standalone editor\n      ^\n\nSyntaxError: Identifier 'global' has already been declared\n    at compileFunction (<anonymous>)\n\n  2 | \n  3 | import React from 'react';\n> 4 | import * as monaco from 'monaco-editor';\n    | ^\n  5 | import { Resizable } from 're-resizable';\n  6 | import {\n  7 |   getLanguageFromFilename,\n\n  at Runtime._execModule (node_modules/jest-runtime/build/index.js:1179:56)\n  at Object.<anonymous> (src/components/helpers/MonacoEditor/index.tsx:4:1)\n  at Object.<anonymous> (src/components/helpers/MonacoEditor/monaco_colorization.spec.tsx:6:1)\n
Run Code Online (Sandbox Code Playgroud)\n

这种情况在升级后就开始发生,旧版本是 0.19.3,所有测试在该版本上都运行良好。monaco-editor-webpack-plugin 也从 1.9.0 升级到 2.0.0

\n

我们直接从摩纳哥进口

\n
node_modules/monaco-editor/esm/vs/editor/editor.api\n
Run Code Online (Sandbox Code Playgroud)\n

以克服延迟加载问题。

\n

笑话配置:

\n
"jest": {\n"modulePaths": [\n  "<rootDir>/src"\n],\n"collectCoverageFrom": [\n  "**/*.{js,jsx,ts,tsx}",\n  "!**/*.d.ts",\n  "!**/node_modules/**",\n  "!**/public/**",\n  "!**/next.config.js",\n  "!**/server.js"\n],\n"setupFilesAfterEnv": [\n  "<rootDir>/setupTests.js"\n],\n"testPathIgnorePatterns": [\n  "<rootDir>/node_modules/",\n  "<rootDir>/.next/",\n  "<rootDir>/public/",\n  "<rootDir>/config/",\n  "<rootDir>/next.config.js",\n  "<rootDir>/server.js",\n  "<rootDir>/build/"\n],\n"transform": {\n  "^.+\\\\.[jt]sx?$": "babel-jest",\n  "^.+\\\\.css$": "<rootDir>/config/jest/cssTransform.js"\n},\n"transformIgnorePatterns": [\n  "/node_modules/(?!monaco-editor)/",\n  "^.+\\\\.module\\\\.(css|sass|scss)$"\n],\n"moduleNameMapper": {\n  "^monaco-editor$": "monaco-editor/esm/vs/editor/editor.api",\n  "^.+\\\\.module\\\\.(css|sass|scss)$": "identity-obj-proxy"\n},\n"coverageReporters": [\n  "text",\n  [\n    "lcov",\n    {\n      "projectRoot": "../../"\n    }\n  ]\n]},\n
Run Code Online (Sandbox Code Playgroud)\n

Fra*_* IV -1

升级monaco-editor 0.23.0为我解决了这个问题。