我正在开发Node.js项目。我正在尝试将ES6功能(例如“导入”,“导出”)与新的ESM库一起使用,但是我正在努力在Express应用程序中使用它。
这是我所做的:
在项目目录中运行npm i --save @std/esm
。
在index.js中,在第一行添加“ require("@std/esm")
”
使用ESS“导入”
这是我的index.js
require("@std/esm")
// const express = require( "express" );
import express from '../node_modules/express'
const router = express.Router();
/* GET home page. */
router.get( "/", ( req, res, next ) => {
res.render( "index", { "title": "Express" } );
} );
// export default router
module.exports = router;
运行项目,但出现此错误
/usr/local/bin/node /Volumes/Elements/Learning/Node/Project/NodeMongoTest1/routes/index.js
/Volumes/Elements/Learning/Node/Project/NodeMongoTest1/routes/index.js:3
import express from '../node_modules/express'
^^^^^^
SyntaxError: Unexpected token import
at new Script (vm.js:51:7)
at createScript (vm.js:136:10)
at Object.runInThisContext (vm.js:197:10)
at Module._compile (module.js:626:28)
at Object.Module._extensions..js (module.js:673:10)
at Module.load (module.js:575:32)
at tryModuleLoad (module.js:515:12)
at Function.Module._load (module.js:507:3)
at Function.Module.runMain (module.js:703:10)
at startup (bootstrap_node.js:193:16)
Process finished with exit code 1
有谁知道如何使用Express Node.js配置ESM?
最佳答案
使用@ std / esm启用ESM的方法有三种。
使用CJS桥启用ESM:
index.js
// Provide options as a parameter, environment variable, or rc file.
require = require("@std/esm")(module/*, options*/)
module.exports = require("./main.mjs").default
使用-r选项在节点CLI中启用ESM:
节点-r @ std / esm main.mjs
在节点REPL中启用ESM:
节点-r @ std / esm
首先尝试#2检查索引文件中的其余代码是否正确
关于node.js - 使用@ std/esm在Express node.js项目中使用ES6,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49091922/