【问题标题】:Cannot use es6 import and export with sequelizesequelize 无法使用 es6 导入导出
【发布时间】:2019-03-16 17:29:46
【问题描述】:

我正在使用 convictjs 来管理我的 nodejs 应用程序的配置文件。具有配置模式的文件称为“config.js”,它位于“config”文件夹中。

我使用的是es6导入导出语句

import convict from "convict";
import dotenv from "dotenv";
import configDev from "./config.dev";
import configProd from "./config.prod";
import configStage from "./config.stage";
.
.
.
export default config.getProperties();

这些配置文件包含数据库凭据和其他必要的数据库信息,我在“index.js”中使用这些信息用于 sequelize 模型。

注意:在开发过程的早期,我们尝试使用 es6 和 sequelize 遇到了其他问题,因此我们选择将 es5 用于模型、迁移和种子。

目前每当我尝试执行迁移时,seuqlize 都会抛出如下所示的错误

ERROR: Error reading "config\config.js". Error: SyntaxError: Unexpected token 
import

Babel 设置正确,我可以编译和运行应用程序,除了数据库迁移之外没有任何问题。非常感谢您对解决此问题的任何帮助。

【问题讨论】:

标签: javascript node.js ecmascript-6 sequelize.js babeljs


【解决方案1】:

据我所知 Node.js 还不支持这种语法,所以你应该使用 require 或者在执行之前使用 babel 转译你的代码。

UPD: 似乎可以从 v10.12.0 https://nodejs.org/api/esm.html 开始在 Node.js 中启用 ES6 模块

node --experimental-modules my-app.mjs

【讨论】:

  • 我正在翻阅我的代码,除了 sequelize 脚本之外,整个应用程序都是用 es6 编写的。
  • 我的 npm 脚本是这样的,"babel-node --presets env ./app.js --nodeEnv dev" 这会转译代码并启动应用程序
  • @KaanYalti 然后,由于某种原因,这个模块没有被转译。无论如何,我现在不建议在节点 js 中使用 ES6 模块。
  • @KaanYalti 您是说当您尝试执行迁移时会出现问题。你是如何执行它们的?
  • 非常感谢,我已经在我的配置文件中切换到 common js。这解决了问题
猜你喜欢
  • 2020-07-29
  • 2017-12-23
  • 2016-11-13
  • 1970-01-01
  • 2017-08-13
  • 2015-11-05
  • 2020-09-17
  • 2020-10-19
相关资源
最近更新 更多