nodejs中怎么引入有ES6语法的npm包?

nodejs中怎么引入有ES6语法的npm包?

nodejs中引入模块用的是require,需要用到的npm包使用的是import

用nodejs的express-gennerator生成的骨架,views下的index.ejs是主页面,当中用外部链接引用的js文件,js文件当中用import引入node_modules中的模块就报错,是不能这样用吗?
其他地方查的有说nodejs已经支持es6语法了,但script标签中加type="module"和package.json中type="modules"都不行。babel编译的方法也试了一下,也没成功。
菜鸟一枚,请大家详细的指教一下。

阅读 1.1k
1 个回答

可以直接用 ESM 么?在 package.json 里用 "type": "module" 开启。

你差的知识太多,需要厘清很多概念。

  1. 首先 ESM 和 CommonJS 是目前最主流的模块管理方式,前者标志是 import,后者是 require
  2. 这两者都只针对 JS。其中 node.js 都支持,web 则只支持 ESM。
  3. package.json 里声明 type: module 会指明该项目在 node.js 下使用 ESM。但是你这个是网页项目,所以跟 package.json 就没什么关系。
  4. 既然你用了 babel,那么很可能也会配套使用 webpack 之类的打包工具。如果最终产品都走打包,那就无所谓。
  5. 否则你就要区分你的 JS 运行在哪个环境下,并采取对应的手段。
  6. 实在不好搞,我的建议是换个包,或者降版本先试试。或者,换个新工具从头开始。总之问题要一个一个解决,不要死抠。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题