Node.js - SyntaxError:意外的令牌导入

新手上路,请多包涵

我不明白出了什么问题。

节点 v5.6.0

NPM v3.10.6

编码:

function (exports, require, module, __filename, __dirname) {
    import express from 'express'
};

错误:

SyntaxError: Unexpected token import
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:387:25)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Function.Module.runMain (module.js:447:10)
    at startup (node.js:140:18)
    at node.js:1001:3

原文由 SofDroid 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

Node 13+Node 13 开始,您可以使用 .mjs 扩展名,或在 package.json 中设置 {"type": "module"} 。您 不需要 使用 --experimental-modules 标志。 模块现在在 node.js 中被标记为稳定

节点 12节点 12 开始,您可以使用 .mjs 扩展名,或在 package.json 中设置 "type": "module" 。您需要使用 --experimental-modules 标志运行节点。

节点 9节点 9 中,它在标志后面启用,并使用 .mjs 扩展名。

 node --experimental-modules my-app.mjs


虽然 import 确实是 ES6 的一部分,但遗憾的是默认情况下 NodeJS 还不支持它,并且直到最近才在浏览器中获得支持。

请参阅 MDN 上的浏览器兼容表此节点问题

来自 James M Snell 关于 Node.js 中 ES6 模块的更新(2017 年 2 月):

工作正在进行中,但需要一些时间——我们目前正在考虑至少一年左右。

在原生支持出现之前( 现在在 Node 13+ 中标记为稳定),您必须继续使用经典的 require 语句:

 const express = require("express");

如果你真的想在 NodeJS 中使用新的 ES6/7 特性,你可以使用 Babel 编译它。 这是一个示例服务器

原文由 Scimonster 发布,翻译遵循 CC BY-SA 4.0 许可协议

不幸的是,Node.js 还不支持 ES6 的 import

要完成你正在尝试做的事情(导入 Express 模块),这段代码应该足够了

var express = require("express");

另外,请确保通过运行安装了 Express

 $ npm install express

有关学习 Node.js 的更多信息,请参阅 Node.js 文档

原文由 baranskistad 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题