nic*_*ojs 6 javascript ecmascript-6 es6-modules
我想知道一段JavaScript是在ES模块中执行还是在简单脚本中执行。
这是我到目前为止所尝试的:
function isEsm1() {
try {
// Script gives a syntax error during parsing when script is not an esm
return Boolean(import.meta.url);
} catch(err) {
return false;
}
}
function isEsm2() {
// will always return false, because `eval` always seems to be executed in regular script context
try {
return eval('Boolean(import.meta.url)');
} catch(err) {
return false;
}
}
function isEsm3() {
// Of course doesn't work, but had to try
return 'meta' in import;
}
Run Code Online (Sandbox Code Playgroud)
感谢约翰·戈特的回答中的讨论,我认为我们已经找到了一种方法。
console.log('In module: ' + (this === undefined));
就这么简单。在模块内部(并且仅在模块内部(我希望)),this将是undefined. 我在 v8 文档中找到了它: https: //v8.dev/features/modules#intro
| 归档时间: |
|
| 查看次数: |
815 次 |
| 最近记录: |