Javascript 检查webpack是否存在依赖项
我经常需要检查网页包中是否存在依赖项。例如,我有一堆像[0,1,3,4,5,6,7,8,…]这样的ID,其中一些有我应该加载的图像,而其他的没有 如何检查图像是否应加载是通过创建一个数组,该数组包含具有图像的值,并在检查图像是否应加载时执行array.contains。比如[1,5,7,…] 这开始变得相当麻烦,因为每次添加或删除图像时都需要更改此数组 有没有办法检查我想要的模块是否存在 据我所知,在Webpack1中有一种方法,但它是关闭的 根据文档()我发现它仍然应该是这样工作的,但是我确实得到了Javascript 检查webpack是否存在依赖项,javascript,webpack,Javascript,Webpack,我经常需要检查网页包中是否存在依赖项。例如,我有一堆像[0,1,3,4,5,6,7,8,…]这样的ID,其中一些有我应该加载的图像,而其他的没有 如何检查图像是否应加载是通过创建一个数组,该数组包含具有图像的值,并在检查图像是否应加载时执行array.contains。比如[1,5,7,…] 这开始变得相当麻烦,因为每次添加或删除图像时都需要更改此数组 有没有办法检查我想要的模块是否存在 据我所知,在Webpack1中有一种方法,但它是关闭的 根据文档()我发现它仍然应该是这样工作的,但是我确
错误:找不到模块
这正是我正在做的:
$scope.getExplorationImage = function (imageId) {
if(__webpack_modules__[require.resolveWeak('image/exploration/' + imageId + '.png')]) {
console.log("Image exists for: "+imageId)
return require('image/exploration/' + imageId + '.png');
} else {
console.log("Image doesn't exists: "+imageId)
}
};
我正在使用Webpack3.5.5。如果可能的话,我想避免使用try/catch解决方案。您所做的就是这样,但它只检查该模块是否已加载,如果您想检查该模块是否可用,则需要将其转换为异步函数
请看这里:
您可以编写一个函数来简化一切:
函数moduleExists(moduleId){
返回新承诺((解决、拒绝)=>{
//检查该模块是否已加载
if(_网页包_模块_;[require.resolve弱(moduleId)]){
返回resolve();
}
返回导入(moduleId)
。然后(()=>解析(),()=>拒绝())
;
});
}
moduleExists('foobaz'/*注意绝对路径*/)
。然后(()=>警报('yes'))
.catch(()=>警报('noope'))
;
const exists=等待模块exists('bar');
如果(存在){/*do stuff*/}
您所做的就是这样,但它只检查该模块是否已加载,如果您想检查该模块是否可用,则需要将其转换为异步函数
请看这里:
您可以编写一个函数来简化一切:
函数moduleExists(moduleId){
返回新承诺((解决、拒绝)=>{
//检查该模块是否已加载
if(_网页包_模块_;[require.resolve弱(moduleId)]){
返回resolve();
}
返回导入(moduleId)
。然后(()=>解析(),()=>拒绝())
;
});
}
moduleExists('foobaz'/*注意绝对路径*/)
。然后(()=>警报('yes'))
.catch(()=>警报('noope'))
;
const exists=等待模块exists('bar');
如果(存在){/*do stuff*/}
我知道问题的状态
如果可能的话,我想避免使用try/catch解决方案
然而,如果有人在测试模块是否存在的过程中试图让webpack不崩溃,那么下面是有效的方法:
// try if module exists
try {
var module = require('../path/to/module');
}
// fallback if does not exists
catch(err) {
var module = require('../path/to/fallback/module');
}
您仍然会在控制台中打印错误,但webpack不会使应用程序崩溃,并正确地返回到catch{}
中提供的模块 我知道问题是这样的
如果可能的话,我想避免使用try/catch解决方案
然而,如果有人在测试模块是否存在的过程中试图让webpack不崩溃,那么下面是有效的方法:
// try if module exists
try {
var module = require('../path/to/module');
}
// fallback if does not exists
catch(err) {
var module = require('../path/to/fallback/module');
}
您仍然会在控制台中打印错误,但webpack不会使应用程序崩溃,并正确地返回到catch{}
中提供的模块 如果\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
这样,您就不会出现异常,仍然可以执行有效的测试。您仍然可以捕获异常,但不使用try/catch。我想在第一种情况下避免抛出异常,但在多次检查之后,我认为这几乎是不可能的。好吧,您仍然在捕获异常,但没有使用try/catch。我想在第一种情况下避免抛出异常,但在多次检查之后,我认为这几乎是不可能的。我使用try/catch方法的主要问题是性能。我现在正在用try/catch做这件事,但如果可能的话,我想用其他的方法。是的,我一直在努力寻找解决这个问题的方法。无论我尝试什么,它都会使应用程序崩溃:/现在,这也是我使用的。我发布它只是为了帮助那些遇到此线程的人作为后备方案,直到有人提供最佳解决方案。还要注意的是,这将在构建日志中产生警告我的try/catch方法的主要问题是性能。我现在正在用try/catch做这件事,但如果可能的话,我想用其他的方法。是的,我一直在努力寻找解决这个问题的方法。无论我尝试什么,它都会使应用程序崩溃:/现在,这也是我使用的。我只是发布它来帮助那些遇到这个线程的人,作为一个后备方案,直到有人提供了一个最好的解决方案