通过导入和导出使工作JavaScript代码最小化



我使用Eclipse。我已经下载了node。版本为12.16.3

寻找模块化,有点像Java类导入之类的东西。我想要的是能够编写JavaScript代码,并将它们分离成几个文件。我看了这些堆栈溢出问题:

  • 导入和导出javascript

  • 为什么';类型:模块';在package.json文件中?

  • https://nodejs.org/docs/latest-v13.x/api/esm.html#esm_enabling

我有两个文件first.js和second.js。first.js应该导入并使用second.js中的一个函数,然后我应该能够运行first.js。

这是代码:

first.js:

import {aFunction} from "./second.js";
var firstNumber = 42;
var secondNumber = 100;

console.log(firstNumber);
console.log(secondNumber);  
var answer = aFunction(secondNumber);
console.log(answer);

second.js:

export var hello = 200;
export function aFunction(numberToDouble) {
return numberToDouble * 2;
}

package.json:

{
"type": "module"
}

这三个文件都在同一个文件夹中。当我运行first.js作为节点程序时,我得到了这个错误:

C:Program Filesnodejsnode.exe first.js 
internal/modules/cjs/loader.js:1149
throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath);
^
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: C:UsersxxxxDesktopxxxxxxxfirst.js
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1149:13)
at Module.load (internal/modules/cjs/loader.js:977:32)
at Function.Module._load (internal/modules/cjs/loader.js:877:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
at internal/main/run_main_module.js:18:47 {
code: 'ERR_REQUIRE_ESM'
}

Node 12.x在功能标志--experimental-modules后面带有es6模块

您必须将其添加到package.json中的start指令中才能获得npm start快捷方式,或者切换到当前的稳定版本,该版本随es6模块一起提供。

我还建议将javascript文件重命名为.mjs以保持惯例。将来您可以使用.mjs和.cjs在模块和通用遗留代码之间切换。

官方文件中的更多信息:https://nodejs.org/api/esm.html

最新更新