Tag: babeljs

巴比尔不能取代箭头function

我安装了babel cli,并创build了一个presets为es2015的.babelrc文件。 我也安装了es2015预设。 但是当我使用命令babel script.js –out-file script-compiled.js并检查输出文件时,我仍然在代码中find箭头函数语法( => ),而不支持箭头函数的浏览器是无法运行我的代码,即使它已经与巴贝尔运输。 这里可能会发生什么? 如果它很重要,该项目正在使用反应,我使用browserify创buildapp.js ,然后将该文件传递给babel。 编辑:这是一个未正确转换的代码示例: this._accountModel.fetch({ success: (res) => { console.log('success'); }, error: () => { console.log('error'); } });

如何让babel只需要转换导入而不需要添加额外的代码呢?

我使用babel将Node.js代码从es6转换为es5,事情是Node.js自然支持cmd风格的require和class,它不需要像下面这样大量的附加代码 Object.defineProperty(exports, "__esModule", { value: true }); 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) { […]

为什么没有instanceof在babel-node下的Error子类的实例上工作?

我看到在OS X上运行babel-node版本6.1.18 /节点版本5.1.0时, instanceof运算符不能运行在Error子类的实例上。为什么? 相同的代码在浏览器中运行良好,请尝试我的小提琴示例。 下面的代码在浏览器中输出true ,而在babel-node下则为false: class Sub extends Error { } let s = new Sub() console.log(`The variable 's' is an instance of Sub: ${s instanceof Sub}`) 我只能想象这是由于babel-node中的错误,因为instanceof对于其他基类的工作比Error 。 .babelrc { "presets": ["es2015"] } 编译输出 这是由babel 6.1.18编译的JavaScript: 'use strict'; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a […]

巴别不尊重API选项

鉴于以下最小的package.json : { "babel": { "presets": ["es2015"], "ignore": [ "b", "c", "node_modules" ] }, "devDependencies": { "babel-cli": "^6.8.0", "babel-preset-es2015": "^6.6.0" }, "scripts": { "transpile": "babel *.js **/*.js –out-dir c" } } 和一个目录结构: foo.js a/ bar.js b/ baz.js npm run transpile通过每个目录npm run transpile ,包括输出目录(如果存在的话): foo.js -> c/foo.js a/bar.js -> c/a/bar.js b/baz.js -> c/b/baz.js c/foo.js -> c/c/foo.js […]

为什么babel-node在REPL中不支持模块加载?

已经确定, babel-node不支持REPL中的模块加载 。 在文档中它只是这样说的: 由于技术限制,babel-node REPL中不完全支持ES6风格的模块加载。 我的问题是为什么? 如果我写了一个名为t.js的小脚本,并用babel-node运行,那么导入语句就可以正常工作。 从标准中读取源代码一行的REPL和从文件中读取源代码的babel-node t.js什么babel-node t.js ? 有没有人知道是否有计划在未来支持import ,因为缺乏import杀死REPL?

在写入磁盘之前,如何将一个webpack版本的输出捕获为一个string?

在webpack中似乎没有output选项将输出作为string写入到nodejs Buffer或stdout 。 谷歌search没有前途。 这是可能的,通过configuration或第三方模块?

如何在Webpack构build和NodeJS服务器进程之间共享代码?

我的应用程序有一个或多或less像这样的目录结构: src-program/ – 包含前端代码,包括package.json和webpack.config.js src-server/ – 包含后端代码,包括不同的package.json和.babelrc shared/foo.js – 是前端和后端都需要的JavaScript代码 所有代码都使用ES2015语法,因此使用Babel进行转码 。 对于前端,在Webpack构build期间通过使用babel-loader来完成“转译”。 对于后端,它由babel-register实时完成。 shared/foo.js需要其他模块,这些模块位于前端和后端的package.json文件中。 由于NodeJS / Webpackparsing模块的方式,共享模块找不到正常。 对于Webpack,我使用这个configuration来解决这个问题: resolve: { root: __dirname, fallback: [ __dirname + "/../shared", __dirname + "/node_modules" ], extensions: ['', '.js', '.jsx'] }, 第一个fallback确保“共享”模块已解决,第二个fallback确保共享模块所需的模块仍然parsing到前端node_modules目录。 这允许包含共享模块像这样简单: import * as foo from 'foo'; 但是,我很难让后端 (即NodeJS)以相同的方式parsing共享模块。 我尝试了使用foo.jsparsing的app-module-path ,但是这个文件不是由Babel处理的,或者像transform-runtime ( foo.js 间接需要的)的其他Babel模块不能被parsing,因为它们驻留在src-server/node_modules … 我可以通过预先编译代码来解决这个问题,而不是使用babe-register但是不pipe怎样,这一切都感觉不对。 那么, […]

NodeJS,Webpack,意外的标记<

我是networking开发新手,刚刚完成我的第一个使用Webpack和React的辅助项目 。 我试图通过创build自己的NodeJS服务器而不是使用Webpack-dev-server从项目中使用的开发环境转移到生产环境。 这是我的代码: webpack.production.config.js var HtmlWebpackPlugin = require('html-webpack-plugin'); var HtmlWebpackPluginConfig = new HtmlWebpackPlugin({ template: __dirname + '/app/index.html', filename: 'index.html', inject: 'body' }) var config = { devtool: 'source-map', entry: './app/index.js', output: { path: __dirname + '/dist', filename: "index_bundle.js", publicPath: __dirname + '/dist' }, module: { loaders: [ {test: /\.js$/, exclude: /node_modules/, loader: "babel-loader"}, {test: […]

debuggingReact / Node后端

所以,这是情况。 我最近“inheritance了”一个体面的Web应用程序,使用React(和Redux)构build,并使用webpack / babel进行编译。 生成两个文件,app.js和server.js,这两个文件都在节点上运行。 该项目的原始开发人员大多是在后台(server.jsx等 – > server.js)“使用它”,使用console.log来弄清楚发生了什么,然后直接感觉到修复。 这在较小的范围内工作,但会在时间上出现问题。 我可以debugging两个实际的文件,但只有app.js被映射正确,这意味着我可以debugging源代码。 这也影响热负荷。 与server.js相关的任何断点只会在IntelliJ中的实际server.js文件中触发,这是一个完全不可读的网格,所以这不是一个真正的select。 我正在使用IntelliJ(WebStorm适合那些只使用networking版的人),而且我尝试过使用每一个指向我设置的指南,这通常归结为babel-node,babel观察者或者webpack-dev-server。 目前的app.js是使用webpack-dev-middleware运行的,在Chrome中debugging它就像一个魅力一样,但是由于某种原因,它总是捆绑在server.js中,然后在准备好的时候触发(在这些星球大战时代)。 我明白,Chrome浏览器很难访问server.jsx,但是肯定有一些设置IntelliJ(或WebStorm)的方法可以这样做? 我更习惯于Java或C#服务器端,所以我有点困惑,这不是一个直接的,现成的select。 或者,也许是,最初的设置是缺乏的? PS。 当使用React(和Redux)作为Node的前端和后端时,是否意味着实际上不可能区分这两者? Server.jsx是相当明显的,但有相当多的重复的JavaScript文件和依赖关系,特别是与处理/build立Redux商店有关。

导入react-native-fetch-blob时意外的令牌

我们正在尝试使用以下代码导入react-native-fetch-blob软件包: const RNFetchBlob = require('react-native-fetch-blob'); const firebase = require('firebase'); 但是,当我们尝试和构build时,我们得到了意外令牌导入的语法错误,如下所示。 C:\ Users \ … \ node_modules \ react-native-fetch-blob \ index.js:5 导入{ ^^^^^^ SyntaxError:意外的标记导入 在Object.exports.runInThisContext(vm.js:76:16) 在Module._compile(module.js:513:28) 在Object.Module._extensions..js(module.js:550:10) 在Module.load(module.js:458:32) 在tryModuleLoad(module.js:417:12) 在Function.Module._load(module.js:409:3) 在Module.require(module.js:468:17) 在要求(内部/ module.js:20:19) 在对象。 (Module.js:541:32)上的C:\ Users \ … \ build \ cloud \ file.js:159:243) 我们正在使用ES6,我们的.babelrc文件如下所示 "plugins": [ ["transform-runtime", { "polyfill": false, "regenerator": true }] ], "presets": […]