很常見的錯誤就是 SyntaxError: Unexpected token 'export',需要確保以下操作,才能解決問題
- tsconfig.json 中 compilerOptions.module 與 target 要設定為 ESNext,compilerOptions.target 也要設定為 ESNext, esModuleInterop 設定為 true, 確定tsc將目的碼編譯為 ESM版本。其次 moduleResolution 設定為 'node' 以便能夠正確解析路徑。
- 如果你的原始碼中存在自定義的包,例如使用 rollup 構建,則 rollup.config.js 中要設定指定的模組化規範
import typescript from '@rollup/plugin-typescript';
export default {
input: 'src/index.ts',
output: {
dir: 'dist',
format: 'es'
},
plugins: [typescript()]
};
- jest.config.js 中配置 babel-jest
// jest.config.js 或 package.json 中的 Jest 配置
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
transform: {
'^.+\\.tsx?$': 'ts-jest',
'^.+\\.jsx?$': 'babel-jest', // 使用 babel-jest 進行轉換
},
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
// 新增其他 Jest 配置
};
- 在 babel.config.json 中配置預設
{
"presets": ["@babel/preset-env"]
}
- 或者使用 babel.config.js 檔案
// babel.config.js
module.exports = {
presets: [
['@babel/preset-env', { targets: { node: 'current' } }]
]
};