“无法重新声明块范围的变量”和“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:意外的令牌'导出'”[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Laravel Eloquent 更新 PostgresQL 中 jsonb 列的多个“键”
SyntaxError Unexpected token 'export' (nuxt vue-echarts)