我正在尝试使用ES6语法将express导入到我的项目中,但是它一直给我错误:
import express from "express";
SyntaxError: Unexpected identifier
我做了一些研究,发现人们在说什么要补充:
“type”:“模块”
到我的package.json文件中,该文件已完成:
...
"description": "Shopping list to learn the MERN stack",
"type": "module",
"main": "server.js",
"scripts": {
"start": "node server.js",
"server": "nodemon server.js"
},
...
但是我仍然遇到同样的问题。我宁愿使用导入ES6语法而不是此语法。
const express = require('express')
最佳答案
解决方案:
对我而言,最好,最简单,最兼容的解决方法(日期为2019年9月)是:
npm install esm
node
选项的-r esm
运行脚本。 就那么简单。
Node 方式:
(根据ECMAScript Modules Documentation)
除了
"type": "module"
的package.json
属性之外,NodeJS要求脚本通过node --experimental-modules <your_script.js>
运行。对新ES6的支持将处理
.mjs
或.js
扩展文件中的代码。重命名我觉得很不方便。注意:
"type": "module"
对于支持.js
文件特别重要。阅读链接的文档。NodeJS提供的带有
--experimental-modules
标志的解决方案在所有情况下都不适合。 ♂♂️添加
esm
包更易于维护;和可靠。并且一旦ESM支持不再具有实验性,就可以轻松/快速地将其删除。题外话:
如果要在ES6
import/export
代码上运行测试,建议使用像Mocha这样的可靠/灵活的框架。您可以关注this instructions to run Mocha tests supporting ES6。
尝试开玩笑,我无法成功运行测试。显然,他们不想直接支持实验性ES6并建议移植代码(我讨厌)。
引用: