我试图在Node.js中掌握ES6导入的技巧,并尝试使用本示例中提供的语法:
我正在浏览支持表,但我无法找到支持新导入语句的版本(我试图寻找文本导入/要求)。我目前正在运行Node.js8.1.2,并且还相信,由于小抄引用的是. js文件,它应该与. js文件一起工作。
当我运行代码时(取自备忘单的第一个例子):
import { square, diag } from 'lib';
我得到的错误:
语法错误:意外的令牌导入。
对我尝试导入的库的引用:
//------ lib.js ------
export const sqrt = Math.sqrt;
export function square(x) {
return x * x;
}
export function diag(x, y) {
return sqrt(square(x) + square(y));
}
我遗漏了什么?如何让节点
识别我的导入
语句?
我只想在JavaScript文件中使用导入
和导出
。
每个人都说这是不可能的。但是,从2018年5月起,可以在普通节点中使用上述功能。js,没有任何模块,如Babel等。
下面是一个简单的方法。
创建以下文件,运行,并亲自查看输出。
也别忘了看下面的解释
。
function myFunc() {
console.log("Hello from myFunc")
}
export default myFunc;
import myFunc from "./myfile.mjs" // Simply using "./myfile" may not work in all resolvers
myFunc();
node --experimental-modules index.mjs
(node:12020) ExperimentalWarning: The ESM module loader is experimental.
Hello from myFunc
说明:
-实验模块
index.mjs节点版本
,它会给我v10.3.0,尽管LTE/稳定/推荐版本是8.11.2 LTS。您还可以使用名为esm的npm包,它允许您在节点中使用ES6模块。js。它不需要配置。使用esm,您将能够在JavaScript文件中使用导出/导入。
在终端上运行以下命令
yarn add esm
或
npm install esm
之后,在使用节点启动服务器时,需要使用此包。例如,如果节点服务器运行索引。js文件,您可以使用以下命令
node -r esm index.js
您还可以将其添加到包中。像这样的json文件
{
"name": "My-app",
"version": "1.0.0",
"description": "Some Hack",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node -r esm index.js"
},
}
然后从终端运行此命令以启动节点服务器
npm start
查看此链接以了解更多详细信息。
Node.js已包括对ES6支持的实验支持。阅读更多关于这里:https://nodejs.org/docs/latest-v13.x/api/esm.html#esm_enabling.
太长,读不下去了
节点。js
在Node.js13及以上非常简单。你需要要么:
保存文件。mjs
扩展,或您只需执行上述操作之一即可使用ECMAScript模块。
节点。js
如果您使用的是Node.js版本8-12,请使用扩展名为. mjs
的ES6模块保存文件,并运行如下操作:
node --experimental-modules my-app.mjs
问题内容: 在我正在合作的项目中,关于可以使用哪种模块系统,我们有两个选择: 导入使用的模块,并使用导出和。 使用ES6导入模块,并使用ES6导出 相互使用是否对性能有好处?如果要在Node模块上使用ES6模块,还有其他什么应该知道的吗? 问题答案: 相互使用是否对性能有好处? 请记住,还没有JavaScript引擎本身支持ES6模块。您说自己正在使用Babel。无论如何,Babel都会默认将其转
问题内容: 我试图在节点中陷入进口的泥潭,并试图使用此示例中提供的语法: [备忘单链接](https://hackernoon.com/import-export-default-require-commandjs- javascript-nodejs-es6-vs-cheatsheet-different-tutorial-example-5a321738b50f) 我正在浏览支持表,但无法找到
问题内容: 我在玩和使用和。我想在不同的文件中构建多个组件,将其导入单个文件并将其捆绑在一起 假设我有几个这样的组件: my-navbar.jsx main-page.jsx 使用webpack并按照其教程进行操作,我有: 构建项目并运行它之后,在浏览器控制台中出现以下错误: 我究竟做错了什么?如何正确导入和导出组件? 问题答案: 尝试 默认设置 组件中的导出: 通过使用默认值,您表示将成为该模块
问题内容: 我开始认为这是不可能的,但是无论如何我都想问。 我想测试我的一个ES6模块以特定方式调用另一个ES6模块。有了茉莉花,这非常容易- 应用程式码: 和测试代码: 笑话相当于什么?我觉得这是一件很想做的简单的事,但是我一直在努力尝试弄清头发。 我最接近的是将s 替换为s,并将其移入测试/函数中。都不是我想做的事情。 为了获得加分,我希望在其中的功能为默认导出时使整个工作正常进行。但是,我知
用例很简单:我只想导出一个名称与导入时相同的对象。 例如: 但这并不起作用。我必须写: 但这很奇怪。正确的方法是什么? 更新: 感谢帮助和参考。我用许多线索解决了我的问题。下面给大家分享一些我常见的案例和解决方法。
问题内容: 使用ES6导入时,是否可以将某些内容导入提供变量名称的模块中? 即我想根据配置中提供的值在运行时导入一些模块: 问题答案: 不与声明。并以可静态分析的方式进行定义,因此它们不能依赖于运行时信息。 您正在寻找loader API(polyfill),但是我对规范的状态尚不清楚: