如何在Express中实例化一个具有转码的ES6代码的对象?

我相信我错过了一些非常简单的事情,但是我不能使用我的节点代码创build对象。 我正在使用webpack&Babel 6来为我解密。 试图按照以下说明学习: http : //blog.jeffdouglas.com/2015/05/06/start-writing-es6-javascript-in-your-node-js-apps-today/

这是我的ES6课程:

export default class ProcessData { constructor() { let output = "Module: 'Process Data' created."; console.log(output); } } 

这里是我尝试使用它的路线:

 var express = require('express'); var router = express.Router(); var ProcessData = require('../public/node/bundle.node.js').default; var processor = new ProcessData(); router.get('/', function (req, res, next) { res.render('index', {}); }); router.post('/results', function (req, res) { res.render('results', req.body); }); module.exports = router; 

这里是转录文件:

 /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports) { "use strict"; var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); 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 ProcessData = (function () { function ProcessData() { _classCallCheck(this, ProcessData); var output = "Module: 'Process Data' created."; console.log(output); } return ProcessData; })(); exports.default = ProcessData; /***/ } /******/ ]); 

这是我不断收到的错误(在新的'n'下有一个插入符号):

var processor = new ProcessData();

TypeError:ProcessData不是一个函数

你不需要default或babel真的。

var ProcessData = require('path/to/es6-class.js');

当你不确定你要求什么时,把一个console.log放在它的周围。

注意 – 你可能需要深入到es6的课程,如果你正在使用最新的节点js lts做服务器端的话,你可以跳过整个babel的步骤。

如果您仍然认为您需要使用babel,则需要使用https://www.npmjs.com/package/babel-plugin-add-module-exports获取预期&#x7684;export行为