Просто набираю скорость с JavaScript, и я сталкиваюсь с проблемой, которую не могу объяснить. Я просто пытаюсь понять различные варианты импорта.
У меня есть:
main.js
utils.js
package.json
utils. js
// this is simply an exemple from the node.js docs
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("What is your name ? ", function(name) {
rl.question("Where do you live ? ", function(country) {
console.log(`${name}, is a citizen of ${country}`);
rl.close();
});
});
export {rl}
package. json
{
"name": "sandbox",
"version": "1.0.0",
"description": "",
"main": "main.js",
"type": "module",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"babel-preset-env": "^1.7.0",
"babel-register": "^6.26.0"
}
}
main. js
import {rl} from './utils.js'
// do stuff with rl, but the import fails
С кодом, как указано выше, require(...) is not defined
, если я пытаюсь запустить utils. js напрямую. Мне нужно удалить оператор экспорта & "type": "module". Если я переименую utils. js в utils.m js, я получаю «require is not defined». Таким образом, я не могу одновременно требовать (...) и использовать экспорт.
Если я запускаю main. js, тогда он говорит, что utils. js не предоставляет экспорт с именем rl (но это так!).
Почему синтаксис "type": "module" & require (...) не может сосуществовать? Если я использую пакет, который уже использует синтаксис require (), значит ли это, что остальная часть моего проекта не может использовать экспорт ECMAScript?