【问题标题】:Can't run babel transpiled files with node无法使用节点运行 babel 转译文件
【发布时间】:2016-06-01 09:22:50
【问题描述】:

这是我刚刚修改为使用 es6 import 以测试转译过程 app.js 的非常基本的 express 样板代码:

import "babel-polyfill";
import * as express from "express"
var app = express();


app.get('/', function (req, res) {
  res.send('Hello World!');
});

app.listen(3000, function () {
  console.log('Examdple app listening on port 3000!');
});

在.babelrc中

{
    "presets": [
     "es2015"
    ],
    "plugins": ["transform-runtime",
      "transform-es2015-classes"]
  }

生成的转译代码 app-compiled.js:

"use strict";

require("babel-polyfill");

var _express = require("express");

var express = _interopRequireWildcard(_express);

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }

var app = express();

app.get('/', function (req, res) {
  res.send('Hello World!');
});

app.listen(3000, function () {
  console.log('Examdple app listening on port 3000!');
});

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

现在尝试运行 /usr/local/bin/node app-compiled.js :

var app = express();
          ^
TypeError: express is not a function

或 /usr/local/bin/node app.js

/Users/Documents/Apps_And_Sites/Js_Apps/projectname/app.js:1
(function (exports, require, module, __filename, __dirname) { import "babel-polyfill";
                                                              ^^^^^^

SyntaxError: Unexpected reserved word

另外,当我不使用 polyfill 时,如果没有封装功能,也会出现同样的“导入”错误。

如果这有帮助,package.json 中的依赖项:

 "devDependencies": {
    "babel-cli": "^6.9.0",
    "babel-core": "^6.9.1",
    "babel-eslint": "^6.0.4",
    "babel-plugin-syntax-flow": "^6.8.0",
    "babel-plugin-transform-class-properties": "^6.9.1",
    "babel-plugin-transform-flow-strip-types": "^6.8.0",
    "babel-plugin-transform-runtime": "^6.9.0",
    "babel-polyfill": "^6.9.1",
    "babel-preset-es2015": "^6.9.0",
    "eslint-plugin-flowtype": "^2.2.7",
    "flow-bin": "^0.26.0"
  },
  "dependencies": {
    "babel-runtime": "^6.9.2",
    "express": "^4.13.4"
  }
}

在我的 webstorm ide 中,我使用这些参数设置了 babel:

程序:node_modules/babel-cli/bin/babel.js

参数:--source-maps --out-file $FileNameWithoutExtension$-compiled.js $FilePath$

要刷新的输出路径: $FileNameWithoutExtension$-compiled.js:$FileNameWithoutExtension$-compiled.js.map

为什么node不能运行babel转译的代码?

【问题讨论】:

    标签: javascript node.js webstorm babeljs transpiler


    【解决方案1】:

    您的import 在语法上是正确的,但对您的用法来说是错误的,它应该是:

    import express from 'express';
    

    【讨论】:

    • 谢谢,我应该如何导入 polyfill,因为他们写的不是将它分配给变量并使用 import "babel-polyfill";哪个导致错误?
    • import 'babel-polyfill';require('babel-polyfill'); 相同,这就是你应该如何使用它。
    猜你喜欢
    • 2022-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 2018-02-18
    相关资源
    最近更新 更多