Babel&Node:转换后出错((0,_express.express)不是函数)

Clé*_*ops 3 javascript node.js babeljs

我正在通过Babel在NodeJS env中编写ES6.所以这是我的.babelrc文件:

{
  "presets": ["es2015", "stage-2"],
  "plugins": []
}
Run Code Online (Sandbox Code Playgroud)

是的,非常简单.我正在使用npm脚本来启动命令:

"build-server": "babel server/lib -d server/dist",
    "build-server:w": "babel server/lib -w -d server/dist",
Run Code Online (Sandbox Code Playgroud)

而且效果很好.在server/,我有一个lib包含我的源代码的dist文件夹和一个包含'babel-code' 的文件夹.

通常,我可以这样写:

import { ModuleAPI } from './api/moduleAPI';
import { path } from 'path';
import { fs } from 'fs';
import { express } from 'express';
let app = express();
Run Code Online (Sandbox Code Playgroud)

这被成功地转化为:

'use strict';

var _moduleAPI = require('./api/moduleAPI');

var _path = require('path');

var _fs = require('fs');

var _express = require('express');

var app = (0, _express.express)();
Run Code Online (Sandbox Code Playgroud)

问题是,当我执行时node server/dist/server.js,会抛出一个错误:

var app = (0, _express.express)();
                               ^
TypeError: (0 , _express.express) is not a function
Run Code Online (Sandbox Code Playgroud)

我已经看到了一些"相似"的问题: /sf/ask/2463127481/ 的WebPack通天ES7异步函数错误"TypeError:(0,_typeof3.default)不是函数"

但我无法让我的代码与Babel一起使用.

任何的想法 ?

Ben*_*une 9

您需要移除大括号express.

import express from 'express';
Run Code Online (Sandbox Code Playgroud)

express不会导出express属性.

  • 同样适用于您现在考虑的其他进口产品. (2认同)