我有一个使用node.js v16的项目,越来越多的npm库不再与require兼容,需要与import一起使用。
到目前为止,我一直在使用 package.json 将我的根目录作为别名
// package.json
"dependencies": {
"~src": "file:.",
}
Run Code Online (Sandbox Code Playgroud)
在我的源代码中
const someCode = require('~src/absolute/path/someCode');
Run Code Online (Sandbox Code Playgroud)
这不适用于导入,并且通过我所做的测试,我还没有找到任何解决方案使其适用于导入。
你已经遇到过这样的问题吗?并找到了解决方案?
我想知道,如果等待已解决的承诺,将导致同步代码执行或可能导致异步代码执行。
我制作了这个小片段来检查浏览器:
const promise = new Promise((resolve) => {
console.log('exec promise');
setTimeout(() => {
console.log('executed promise');
resolve();
}, 1000);
});
(async () => {
console.log('start');
for (let i = 0; i < 1e8; i += 1) {
await promise;
}
console.log('end');
})();
Run Code Online (Sandbox Code Playgroud)
看起来浏览器使其同步(考虑到屏幕冻结)。
但是......这是由于浏览器特定的实现吗?还是设计使然?