我在TypeScript项目的Jest测试中集成mdast-util-from-markdown时遇到语法错误。正在寻找避免使用Babel的解决方案。
我的代码使用ts-node运行良好。
问题:
当我运行Jest测试时,我收到以下错误:
Details:
/Users/dudeman/ac/_utils/md-hierarchical-parser/node_modules/mdast-util-from-markdown/index.js:2
export {fromMarkdown} from './lib/index.js'
^^^^^^
SyntaxError: Unexpected token 'export'
> 1 | import { fromMarkdown } from "mdast-util-from-markdown";
字符串
当前设置
配置:
tsconfig.json
:
{
"compilerOptions": {
"target": "es2017",
"module": "commonjs", // Also tried "esnext"
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true
},
"include": [
"src/**/*",
"test/**/*"
]
}
型jest.config.cjs
(也尝试jest.config.js
)
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
globals: {
'ts-jest': {
useESM: true
}
},
moduleNameMapper: {
'^(\\.{1,2}/.*)\\.js$': '$1'
},
transform: {
'^.+\\.ts$': 'ts-jest'
},
extensionsToTreatAsEsm: ['.ts']
};
型
Runner
npx jest
个NODE_OPTIONS='--loader ts-node/esm' npc jest
个
试过了
- 修改我的tslog.json以使用不同的模块设置(例如,“esnext”,“commonjs”)
- 将jest.js.js修改为
- 处理ES模块语法,
transformIgnorePatterns: ['<rootDir>/node_modules/(?!unist-util-visit)'],
个- 我也使用了babel(尽管我不喜欢),但我仍然得到错误:/
提问:
如何配置Jest和TypeScript以使用mdast-util-from-markdown而不会遇到“Unexpected token”错误,并且最好不要在设置中引入Babel?
编辑:
似乎能和tsconfig.json
个
{
"compilerOptions": {
"strict": true,
"target": "ES2022",
"module": "esnext",
"moduleResolution": "node",
"lib": ["esnext"],
"types": ["node", "jest"],
"skipLibCheck": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"declaration": true,
"allowSyntheticDefaultImports": true
},
"ts-node": {
"experimentalSpecifierResolution": "node",
"transpileOnly": true,
"esm": true,
},
"exclude": ["node_modules", "lib"]
}
型jest.config.js
个
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
transform: {
'^.+\\.{ts|tsx}?$': ['ts-jest', {
useESM: true
}],
},
moduleNameMapper: {
'^(\\.{1,2}/.*)\\.js$': '$1'
},
extensionsToTreatAsEsm: ['.ts']
};
型package.json
个
"type": "module",
"dependencies": {},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^6.13.1",
"@typescript-eslint/parser": "^6.13.1",
"@types/jest": "29.5.10",
"eslint": "^8.55.0",
"jest": "29.7.0",
"ts-jest": "29.1.1",
"ts-node": "^10.9.1",
"typescript": "^5.2.2"
}
型jest --env=node --colors --coverage test
1条答案
按热度按时间jvidinwx1#
react-markdown
附带了大量的依赖项,你必须通过jest config忽略这些依赖项:字符串