使用ts-node-dev运行项目时import附近报SyntaxError: Unexpected string错误
问题原因
报错本质是你引入的@polkadot/* 7.x及以上版本仅提供ESM格式产物,Node.js的CommonJS模块加载器无法原生识别ESM的import语法,而你的配置默认跳过了对node_modules目录下所有文件的转译,导致未转译的ESM语法直接被执行触发语法错误。
修复步骤
第一步 调整tsconfig.json配置
在compilerOptions中新增两项配置:
{ "compilerOptions": { // 保留原有配置不变,新增以下两行 "allowJs": true, "skipLibCheck": true } }
allowJs:允许TypeScript编译JS文件,才能转译@polkadot包下的ESM格式JS代码skipLibCheck:跳过第三方库的类型检查,避免非业务代码的类型报错阻断运行
第二步 修改package.json的dev启动脚本
给ts-node-dev添加忽略规则,不要跳过@polkadot相关包的转译:
{ "scripts": { // 替换原有dev脚本 "dev": "ts-node-dev --respawn --pretty --transpile-only --ignore '/node_modules/(?!@polkadot/)' src/index.ts" } }
--ignore '/node_modules/(?!@polkadot/)'的作用是:仅忽略node_modules下除了@polkadot开头之外的所有包,保证@polkadot相关代码会被正常转译。
可选补充方案
如果上述修改后仍有报错,可以升级ts-node和ts-node-dev到最新稳定版,也可以替换为支持ESM和CommonJS混合加载的TypeScript运行工具。
内容的提问来源于stack exchange,提问作者Emmanuel Thomas
相关产品推荐
相关产品推荐

