我不明白怎么了。 节点v5.6.0 NPM v3.10.6 html
代码: node
function (exports, require, module, __filename, __dirname) { import express from 'express' };
错误: webpack
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
不幸的是,Node.js尚不支持ES6的import
。 git
要完成您要尝试执行的操做(导入Express模块),此代码就足够了 es6
var express = require("express");
另外,请确保经过运行安装了Express github
$ npm install express
有关学习Node.js的更多信息,请参见Node.js文档 。 web
更新3:从Node 13开始 ,您能够使用.mjs扩展名,也能够在package.json中设置“ type”:“ module”。 你并不须要使用--experimental-modules
的标志。 express
更新2:从节点12开始 ,您能够使用.mjs
扩展名,也能够在.mjs
设置"type": "module"
。 而且您须要使用--experimental-modules
标志运行节点。 npm
更新:在节点9中 ,它在标志后面启用,并使用.mjs
扩展名。 json
node --experimental-modules my-app.mjs
虽然import
确实是ES6的一部分,可是不幸的是,默认状况下NodeJS还没有支持import
,而且最近才在浏览器中提供支持。
请参阅有关MDN的浏览器兼容表以及此Node问题 。
摘自James M Snell 关于Node.js中ES6模块的更新 (2017年2月):
工做正在进行中,但将须要一些时间-咱们目前至少须要一年左右的时间。
在本地显示支持以前,您必须继续使用经典的require
语句:
const express = require("express");
若是您确实想在NodeJS中使用ES6 / 7的新功能,则能够使用Babel对其进行编译。 这是一个示例服务器 。
错误: SyntaxError:意外的令牌导入或SyntaxError:意外的令牌导出
解决方案:以全部进口为例
const express = require('express'); const webpack = require('webpack'); const path = require('path'); const config = require('../webpack.config.dev'); const open = require('open');
并更改您的export default = foo;
到module.exports = foo;
若是能够使用“ babel”,请尝试在package.json(-presets = es2015)中添加构建脚本,以下所示。 它能够将导入代码预编译到es2015
"build": "babel server --out-dir build --presets=es2015 && webpack"
就我而言,它是在.babelrc
文件,而且应包含如下内容:
{ "presets": ["es2015-node5", "stage-3"], "plugins": [] }