node require()与es6 import:为什么这个例子没有工作

问题描述:

是不是ES6取代node require()?我有以下代码:node require()与es6 import:为什么这个例子没有工作

var sprintf = require("sprintf-js").sprintf;

这像宣传的那样。我只能使用sprintf()。我想完成同样使用ES6 import语句:

import sprintf from 'sprintf-js';

这是行不通的。为什么不?我该如何解决它?奖励点数,如果你能解释sprintf-js内的出口是如何工作的。

+0

你可能需要从“的sprintf JS”做'进口{}的sprintf;' –

您可以通过多种方式访问​​模块导出。 See the MDN article.

import defaultMember from "module-name"; 
import * as name from "module-name"; 
import { member } from "module-name"; 
import { member as alias } from "module-name"; 
import { member1 , member2 } from "module-name"; 
import { member1 , member2 as alias2 , [...] } from "module-name"; 
import defaultMember, { member [ , [...] ] } from "module-name"; 
import defaultMember, * as name from "module-name"; 
import "module-name"; 

在这种情况下,你的语法会工作,如果你已经分配的sprintf出口为default;如果您已将sprintf分配给default对象。

假设它不是,正确的语法将在大括号内引用导出的方法。

import { sprintf } from 'sprintf-js'; 
+1

*“将包括一个解构的对象引用的方法” *请注意,在'import'语句中使用的语法无关做解构。它只是看起来相似。只是为了防止混淆。 –

+0

啊。有趣的一点。我可能对导入的curlybrace语法有错误的印象。我认为等价的导入就像'resource''中的import {prop:prop},但它显然不起作用。 – Bosworth99

+0

关于导入的好讨论大括号语法:http://*.com/questions/31096597/using-brackets-with-javascript-import-syntax – Bosworth99