小编典典

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

node.js

我不明白怎么了。节点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

阅读 334

收藏
2020-07-07

共1个答案

小编典典

更新3:Node
13开始
,您可以使用.mjs扩展名,也可以在package.json中设置“
type”:“ module”。你 并不 需要使用--experimental-modules标志。

更新2:Node
12开始
,您可以使用.mjs扩展名,也可以"type": "module"在package.json中进行设置。并且您需要运行带有--experimental-modules标志的节点。

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

node --experimental-modules my-app.mjs

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

有关MDN此Node问题,请参阅浏览器兼容性表

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

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

在本地显示支持之前,您必须继续使用经典require语句:

const express = require("express");

如果您确实要在NodeJS中使用ES6 /
7的新功能,则可以使用Babel对其进行编译。这是一个示例服务器

2020-07-07