【发布时间】:2020-10-25 20:10:15
【问题描述】:
有没有办法
- 在
Expressapp 中使用ES6 模块编写我的代码; - 不恢复到
babel或@std/esm?
一旦我致力于Express 中的app.js,我就找不到摆脱它的方法。
这似乎应该已经在网络上,但我能找到的只是上面的选项(转译,esm)。
【问题讨论】:
-
你读过这个吗:nodejs.org/api/esm.html
-
对那篇文章或多或少熟悉。我看到的唯一途径是使用动态导入()。我试过了,但无法让它工作。就像在 app.js 中放入下面一样。应用程序运行,但 url 导致“未找到”。它从模块中提取正确的对象,但 app.use() 部分好像没有发生。可能等到解决这个问题时为时已晚? import('./routes/lecture.mjs') .then (lectureModule => { app.use('/lectures', LectureModule.router); })
-
您需要向我们展示您尝试使用的精确代码,以便我们知道建议什么作为修复。 ESM 模块可以在更高版本的 nodejs 中正常工作。我只使用 ESM 导入运行程序,但是 NPM 上的某些 ComonJS 模块存在一些兼容性问题,因此除非您仅使用专门支持 ESM 导入的模块,否则您可能需要进行一些故障排除才能查看问题所在。
-
我想要做的就是在 Express 的 app.js 中有 app.use('/someUrl', someRouter)。如果我按本书来做, const someRouter = require('someModule') 就可以了。但我更喜欢使用 ES6 格式的 someModule 而不是 commonJS。我宁愿避免使用 babel 或 @std/esm
标签: javascript node.js express ecmascript-6 module