我不明白怎麼了。 節點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": [] }