簡體   English   中英

在Node.js REPL中導入ES6樣式

[英]ES6 style imports in Node.js REPL

來自Python背景並且是Node.js的新手,我發現使用Node.js REPL交互式嘗試代碼非常困難。 我遇到的一個關鍵問題是imports

ES6樣式導入不能在Node.js REPL上運行,我必須使用require使用CommonJS樣式導入。 示例:我無法在Node提示符下編寫import rxjs並且必須使用require('rxjs') 這使得將粘貼腳本復制到Node REPL中以便快速測試它們變得更加困難,我必須首先將所有ES6樣式的導入轉換為需要導入的,這種導入感覺違反直覺。

有沒有簡單的方法可以使用Node.js REPL中的ES6樣式導入?

喜歡:

$ node
> import'rxjs';
>從'rxjs / operator / map'導入{map};

我甚至嘗試過babel-node ,它似乎不支持模塊導入。

我擔心答案是否定的 ,或者至少還沒有 我們知道它將來會得到支持,但ES2015的importexport不會作為CommonJS requiremodule.exports的就地替換。 這只是因為它們的工作方式不同。 您可以在此Node.js博客文章此SO問題中找到更多信息。 特別是,人們已經可以在標志--experimental-modules (相關的2ality博客文章 )下運行和導入Node.js中的標准模塊。 但是,REPL仍然無法使用此功能。

你使用babel-node (現在稱為babel-cli )的想法並不是那么糟糕: babel實現了一個可互操作的require函數,它是一種可以檢索為這兩種類型系統設計的模塊的墊片。 不幸的是, 官方網站聲稱在REPL中缺少對此功能的支持:

ES6樣式的模塊加載可能無法按預期運行

由於技術限制,在babel節點REPL中不完全支持ES6樣式的模塊加載。

盡管如此,這個問題並不適用於生產代碼,而生產代碼無論如何都不應該依賴於REPL。 您可以考慮在包含babel-cli項目中編寫腳本,並創建用於運行轉換版本的腳本,而不是使用REPL:

{
  "name": "my-test-chamber",
  "private": true,
  "scripts": {
    "build": "babel src/main.js -o lib/main.js",
    "start": "npm run build && node lib/main.js"
  },
  "dev-dependencies": {
    "babel-cli": "^6.0.0"
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM