刚刚跟上 JavaScript 的步伐,我遇到了一个我无法解释的问题。我只是想了解不同的导入选项。
我有:
main.js
utils.js
package.json
工具.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}
包.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"
}
}
主程序
import {rl} from './utils.js'
// do stuff with rl, but the import fails
使用上面的代码,require(...) is not defined 如果我尝试直接运行 utils.js。我需要删除导出语句和“type”:“module”。如果我将 utils.js 重命名为 utils.mjs,那么我会得到“require is not defined”。所以基本上我不能同时拥有 require(...) 和使用 exports。
如果我运行 main.js,它会说 utils.js 不提供名为 rl 的导出(但它提供!)。
为什么 "type":"module" & require(...) 语法不能共存?如果我使用的包已经使用了 require() 语法,那么这是否意味着我的项目的其余部分不能使用 ECMAScript 导出?
12345678_0001
相关分类