pin*_*yeg 3 node.js express ecmascript-6
我正在尝试使用 ES6 语法将 express 导入我的项目,但它一直给我错误:
import express from "express";
SyntaxError: Unexpected identifier
Run Code Online (Sandbox Code Playgroud)
我做了一些研究,发现人们说要添加的地方:
“类型”:“模块”
到我已经完成的 package.json 文件:
...
"description": "Shopping list to learn the MERN stack",
"type": "module",
"main": "server.js",
"scripts": {
"start": "node server.js",
"server": "nodemon server.js"
},
...
Run Code Online (Sandbox Code Playgroud)
But I'm still getting the same issue. I would prefer to use the import ES6 syntax rather than this syntax.
const express = require('express')
Run Code Online (Sandbox Code Playgroud)
Kam*_*her 11
对我来说,最好、最简单、最兼容的解决方法(日期为2019年9 月)是:
npm install esmnode使用该-r esm选项运行脚本。就那么简单。
(根据ECMAScript 模块文档)
除了NodeJS 中的"type": "module"属性之外package.json,脚本还需要通过node --experimental-modules <your_script.js>.
代码.mjs或.js扩展文件中的代码将得到对新 ES6 的支持。重命名我觉得很不方便。
注意: "type": "module"对于支持.js文件尤其重要。阅读链接的文档。
NodeJS 提供的带有--experimental-modules标志的解决方案在所有情况下都不适用于我。???
添加esm包更易于维护;和可靠。一旦 ESM 支持不再是实验性的,就可以轻松/快速地删除。
如果你想对你的 ES6 import/export代码运行测试,我建议依赖一个可靠/灵活的框架,比如 Mocha。
您可以按照此说明运行支持 ES6 的 Mocha 测试。
尝试使用Jest我无法成功运行测试。显然他们不想直接支持实验性 ES6 并建议转译代码(我讨厌的东西)。
如果你尝试使用ES6 语法运行Node js应用程序,你会遇到这种错误
SyntaxError: Cannot use import statement outside a module
Run Code Online (Sandbox Code Playgroud)
让我们解决这个问题
安装三个主要包
npm install --save-dev @babel/core @babel/preset-env @babel/node
npm install --save-dev nodemon
Run Code Online (Sandbox Code Playgroud)
用这个添加.babelrc文件
{ "presets": ["@babel/preset-env"] }
这在package.json
"start": "nodemon --exec babel-node app.js"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7554 次 |
| 最近记录: |