“无法重新声明块范围的变量”和“SyntaxError:意外的令牌'导出'”[关闭]

Posted

技术标签:

【中文标题】“无法重新声明块范围的变量”和“SyntaxError:意外的令牌\'导出\'”[关闭]【英文标题】:"Cannot redeclare block-scoped variable" with "SyntaxError: Unexpected token 'export'" [closed]“无法重新声明块范围的变量”和“SyntaxError:意外的令牌'导出'”[关闭] 【发布时间】:2022-01-16 14:05:00 【问题描述】:

我正在创建一个节点(快速应用程序),但在尝试导入一个模块时遇到了一些错误。

我有一个seeder.ts 文件,我想在其中连接到database.ts 并填充数据库。

但是我遇到了 TS 模块的问题。我遇到了 TS 需要知道文件应该被视为模块还是脚本的问题。

'Cannot redeclare block-scoped variable' -> 解决方案是添加export 所有文件,包括database.ts(您可以在此处阅读:'Cannot redeclare block-scoped variable' in unrelated files)

那么,当我运行脚本来填充数据库时:node ./seeder.ts,我在其中执行const db = require("./database.ts"):,我得到了另一个错误:

'SyntaxError: Unexpected token 'export'' -> 解决方案是从所有文件中删除export (检查此Getting Unexpected Token Export)...然后我将拥有再次出现第一个错误:(

这里还有其他选择吗?

【问题讨论】:

您正在尝试使用 node.js 执行 TypeScript 文件,但该文件无法正常工作 - 您需要先对其进行转译以去除类型注释。另外,当您想使用 ES6 模块时,为什么要使用 require?请改用import 【参考方案1】:

你需要了解modules(es6 import/export)和commonjs(require/module.exports)的区别。您可以决定选择哪种方式。快速修复是在你的 package.json 中添加

"type" : "module"

并且不要忘记将 require 更改为新的 es6 导入。

【讨论】:

以上是关于“无法重新声明块范围的变量”和“SyntaxError:意外的令牌'导出'”[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

python常见的异常处理类型

/bin/sh: 1: 语法错误:反引号替换中的 EOF

如何使用 Laravel Eloquent 更新 PostgresQL 中 jsonb 列的多个“键”

SyntaxError Unexpected token 'export' (nuxt vue-echarts)

Jest with Styled Components 错误:解析预期 css 的语法错误:缺少“”

使用 BASH 或 awk 或 sed 或其他方式删除文件的前两行