Sequelize UUID 中出现意外的令牌 'export'

10

我正在尝试运行Sequelize,但在UUID模块中出现以下导出错误:

文件:/uuid/dist/esm-browser/index.js:1

export { default as v1 } from './v1.js';
^^^^^^

SyntaxError: Unexpected token 'export'

如何正确解决这个问题?我正在使用node


您可能正在运行不支持模块的旧节点版本。 - Evert
我在使用 node 13.3.0 和 ts-node 进行 TypeScript 开发时也遇到了这个问题。 - James
我在使用最新版本的node 14.6.0、uuid 8.3.0、sequelize 6.3.3和sequelize-cli 6.2.0时遇到了同样的问题。 - TedOC
3个回答

4

4
尝试过使用Node 14.8.0、14.4.0和14.0.0版本,但都无法正常工作。 - Craig

1

如果您在项目中使用sequelize模块,并在启动项目时遇到了这个错误,那么您需要注意以下内容。该错误不仅会在使用sequelize时发生,而且会在使用基于commonJS的项目中同时使用现代ES6的模块(例如UUID节点模块)时发生。

export { default as v1 } from './v1.js';
^^^^^^

SyntaxError: Unexpected token 'export'

这里有一个可能有用的解决方案,需要注意一点:

我在将我的应用部署到Digital Ocean时遇到了这个错误,我使用的是最新的nodejs版本v14。

在你的项目根目录中,
安装babel和babel开发依赖。
npm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/node

这个模块可以帮助您在 commonJs 代码旁边运行现代的 es6 模块。 安装 babel 之后,在根目录创建一个 .babelrc 文件并添加以下代码。
{   
"presets": [
 "@babel/preset-env"   
  ] 
}

执行此文件将告诉babel如何编译安装的node模块中发现的ES6模块。 最后一步是在node启动执行管道文件中执行.babelrc文件。 打开package.json并按如下方式编辑您的启动脚本。
"start" : "node --exec babel-node index.js"

或者如果使用nodemon
"start" : "nodemon --exec babel-node index.js"

请确保您的 .babelrc 文件创建在根目录下,即与 npm init 创建的 package.json 和 package.lock.json 文件同级。

0

也许现在给出解决方案有点晚了,但我曾经为此问题苦苦挣扎,之前的解决方案对我都不起作用。问题是Node在没有读取由Babel转换的代码的情况下触发Sequelize。 为了解决这个问题,只需按以下方式修复脚本。我没有在package.json中使用"type": "module",我更喜欢使用Babel来启动服务器。

  "scripts": {
    "build": "babel src -d dist",
    "dev": "nodemon --exec babel-node ./src/index.js",
    "start": "yarn run build && node dist/index.js",
    "test": "nyc --reporter=text mocha --config=test/.mocharc.json",
    "test:watch": "mocha --config=test/.mocharc.json -- --watch",
    "sequelize": "babel-node node_modules/.bin/sequelize $*",
    "db:drop": "dropdb --if-exists ${POSTGRES_DB}",
    "db:create": "createdb ${POSTGRES_DB}",
    "db:migrate": "yarn sequelize db:migrate",
    "db:rollback": "yarn sequelize db:migrate:undo"
  },

脚本sequelize通过babel-node读取node_modules/.bin/sequelize $*

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接