node.js - 使用 ts-node 执行打字稿代码会出现“无法在模块外使用 import 语句”错误
问题描述
我正在尝试运行apollo-server
,我编写的代码位于TypeScript
.
我的代码文件夹包含tsconfig.json
如下所示:
{
"compilerOptions": {
"target": "esnext",
"lib": [
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true
},
"include": [
"server"
]
}
我正在运行的命令如下:
$ npx ts-node ./server/index.ts
如果我删除 tsconfig.json (当然我不能这样做),上面的命令可以正常工作。我不确定哪个配置实际上导致了问题。
解决方案
您正在搜索的设置是"module": "commonjs"
。由于 ts-node 在 nodejs 环境中执行你的代码,你必须使用它的模块系统。如果您需要将您的配置作为项目的默认配置,您可以创建第二个 tsconfigtsconfig.node.json
并将其定位为ts-node --project <tsconfig.json>
tsconfig.node.json
:
{
"extends": "./",
"compilerOptions": {
"module": "commonjs",
},
}
推荐阅读
- java - 多次调用超级构造函数
- python - 为什么 IPv6 端口不可用
- node.js - 尝试启动 webpack 时似乎出现错误
- c# - BlockingUnaryCall 调用上的 C# gRPC 未处理异常
- javascript - getIdToken() 不是函数,即使它像 firebase 文档中的函数一样使用
- python - so_reuseport下如何连接特定的grpc服务器进程
- angular - 从新日期减去 1 小时并得到奇怪的结果
- c# - 添加视图功能在 ASP.NET MVC 中不起作用
- android - 如何修复 android 中的“ChipGroup IllegalStateException”错误
- c# - 动态获取一个 DbSet