Node.js导入express遇SyntaxError: Unexpected token *问题求助
解决ts-node运行TypeScript文件时的import语法错误
我来帮你搞定这个问题~你遇到的SyntaxError: Unexpected token *其实是因为ts-node没有正确解析TypeScript的模块语法,结合你用的Node.js v10.16.3这个版本,试试下面几个靠谱的解决方案:
1. 配置tsconfig.json的模块编译选项
首先确保你的项目根目录有tsconfig.json文件,并且在compilerOptions里设置正确的模块规则,适配Node.js v10的CommonJS模块系统:
{ "compilerOptions": { "module": "CommonJS", "target": "ES6", "esModuleInterop": true, "allowSyntheticDefaultImports": true }, "include": ["./server/**/*"] }
module: "CommonJS":告诉TypeScript把ES模块语法转成Node.js支持的CommonJS格式esModuleInterop和allowSyntheticDefaultImports:让TypeScript的import语法能正确兼容Express这类第三方CommonJS模块
2. 运行ts-node时指定tsconfig文件
有时候ts-node可能没自动加载到你的tsconfig,你可以在运行命令时明确指定:
ts-node --project tsconfig.json ./server/server.ts
3. 降级ts-node版本适配Node.js v10
Node.js v10属于比较老的版本,新版本的ts-node已经不再支持它了。你需要安装兼容的ts-node@8.x版本:
# 全局安装 npm install -g ts-node@8.10.2 # 或者本地安装到项目开发依赖 npm install --save-dev ts-node@8.10.2
4. 临时应急方案:改用require语法
如果上面的方案都暂时没法生效,你可以先把TypeScript的import改成CommonJS的require写法应急:
const express = require('express');
内容的提问来源于stack exchange,提问作者Stefano Borzì
相关产品推荐
相关产品推荐

