2016-01-21 61 views
4

我在Webstorm中有一個「Unexpected token export」問題沒有被其他StackOverflow帖子解決。基本上我正在嘗試使用下面的package.json和bar.js代碼的導入/導出模塊功能。我正在使用Node.js 5x,Babel 6,並且我有一個File Watcher安裝程序來實現Babel變換。代碼應該說明問題,我很欣賞任何關於如何解決它的想法。再次,我已經嘗試了其他的StackOverflow建議,此時沒有運氣。Webstorm意外的令牌導出

//bar.js 

'use strict'; 

export class Bar{ 
    constructor(){ 
     this.tempish = 'allo'; 
    } 
} 

//bar-compiled.js 

'use strict'; 

Object.defineProperty(exports, "__esModule", { 
    value: true 
}); 

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 

var Bar = exports.Bar = function Bar() { 
    _classCallCheck(this, Bar); 

    this.tempish = 'allo'; 
}; 

//# sourceMappingURL=bar-compiled.js.map 

//index.js 

'use strict'; 

import {Bar} from './bar' 

console.log('This is a test.'); 

//index-compiled.js 

'use strict'; 

var _bar = require('./bar'); 

console.log('This is a test.'); 

//# sourceMappingURL=index-compiled.js.map 

//package.json 

{ 
    "name": "npt-test", 
    "version": "1.0.0", 
    "description": "", 
    "main": "index-compiled.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "", 
    "license": "ISC", 
    "dependencies": { 
    "babel": "^6.3.26", 
    "babel-cli": "^6.4.5", 
    "babel-core": "^6.4.5", 
    "babel-plugin-transform-decorators-legacy": "^1.3.4", 
    "babel-preset-es2015": "^6.3.13", 
    "babel-preset-stage-0": "^6.3.13" 
    } 
} 

//.babelrc 

{ 
    "presets": ["es2015", "stage-0", "stage-1"], 
    "plugins": ["babel-plugin-transform-decorators-legacy"] 
} 

//Error on debug, I am running against the index-compiled.js during debug 

C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" 
"C:\Program Files\nodejs\node.exe" --debug-brk=45287 --nolazy index-compiled.js 
Debugger listening on port 45287 
[MYPROJECTDIR]\bar.js:3 
export class Bar{ 
^^^^^^ 

SyntaxError: Unexpected token export 
    at exports.runInThisContext (vm.js:53:16) 
    at Module._compile (module.js:373:25) 
    at Object.Module._extensions..js (module.js:404:10) 
    at Module.load (module.js:343:32) 
    at Function.Module._load (module.js:300:12) 
    at Module.require (module.js:353:17) 
    at require (internal/module.js:12:17) 
    at Object.<anonymous> ([MYPROJECTDIR]\index-compiled.js:3:12) 
at Module._compile (module.js:397:26) 
at Object.Module._extensions..js (module.js:404:10) 

過程完成,退出代碼爲1

回答

3

什麼是您index-compiled.js的代碼是什麼樣子?似乎它需要原始bar.js而不是bar-compiled.js。 Node.js本身不能執行ES6代碼,因此錯誤。

我建議配置編譯器將編譯後的代碼輸出到單獨的目錄中以避免使用'編譯'後綴。請參閱以下鏈接,瞭解如何使用WebStorm設置Babel 6:http://mcculloughwebservices.com/2015/12/10/webstorm-babel-6-plugin/

+0

好問題,我在上面的答案中添加了index-compiled.js。希望這應該有所幫助。 – jdscolam

+0

我不應該要求實際導出的模塊腳本而不是腳本? – jdscolam

+0

好的,我從以下網址解決了該問題:http://mcculloughwebservices.com/2015/12/10/webstorm-b​​abel-6-plugin/。最終,這就是我想要的,讓完整的可調試代碼位於基於更清晰的ES6/7代碼即時創建的dist中。 @lena:如果您更新您的答案,將其標記爲包含您無法「調試到位」的非鏈接代碼的鏈接和信息 – jdscolam