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

我不明白怎麼了。 節點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

#1樓

不幸的是,Node.js尚不支持ES6的importgit

要完成您要嘗試執行的操做(導入Express模塊​​),此代碼就足夠了 es6

var express = require("express");

另外,請確保經過運行安裝了Express github

$ npm install express

有關學習Node.js的更多信息,請參見Node.js文檔web


#2樓

更新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對其進行編譯。 這是一個示例服務器


#3樓

錯誤: 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;


#4樓

若是能夠使用「 babel」,請嘗試在package.json(-presets = es2015)中添加構建腳本,以下所示。 它能夠將導入代碼預編譯到es2015

"build": "babel server --out-dir build --presets=es2015 && webpack"

#5樓

就我而言,它是在.babelrc文件,而且應包含如下內容:

{
  "presets": ["es2015-node5", "stage-3"],
  "plugins": []
}
相關文章
相關標籤/搜索