hexo报错未找到模块DTraceProviderBindings

版权声明:本文为博主原创文章,未经博主允许不得转载。

 

前言

最近hexo总是报这个没找到模块的问题,从网上得知这个并不影响使用,但是身为洁癖程序员看到这报错实在无法忍受啊,遂找方法解决。

hexo报错

1
2
3
{ [Error: Cannot find module './build/Release/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
{ [Error: Cannot find module './build/default/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
{ [Error: Cannot find module './build/Debug/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }

解决办法

先说说网上的解决办法

官方给的解决办法是,输入如下内容:

1
npm install hexo --no-optional

这样就没问题了,你以为真没问题了?那你就太天真了少年,输入完还是一样报错,我以为只有我是这样,一看,还真不是,受害者颇多啊!

然后就是第二种说法:

因为 cnpm 国内依赖包的问题,内容不全,所以需要npm安装完整的包。

就是卸载hexo npm重装一遍~有小伙伴是这样解决的,同样的我也试了,没成功!

还看到一个更扯的,说把依赖的百度地图插件等注释了就好了,我只能说这完全没关系,如果真是注释了百度地图的插件就没问题了,那也是凑巧。百度谷歌地图插件是一定还要的!

下面来说一下解决办法,操作没问题应该不会出现提示的,其实我也只是把提示关掉而已:

  1. 首先我们找到全局hexo的安装目录

  2. 找到文件dtrace-provider.js

  3. 注释如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var builds = ['Release', 'default', 'Debug'];

for (var i in builds) {
try {
var binding = require('./build/' + builds[i] + '/DTraceProviderBindings');
DTraceProvider = binding.DTraceProvider;
break;
} catch (e) {
// if the platform looks like it _should_ have DTrace
// available, log a failure to load the bindings.
if (process.platform == 'darwin' ||
process.platform == 'sunos' ||
process.platform == 'freebsd') {
console.error(e);
}
}
}

在编译一下看看,应该没问题了。

原因

输入一下 npm list 我们会看到 dtrace-provider 这个模块,就是这个模块报的错误,按逻辑讲,最简单粗暴的方法就是 npm uninstall dtrace-provider 卸载这个模块就可以了~但本人卸载后还是报错,有朋友卸载之后就ok了,可以试试。

总结

破问题查了好几天,别人碰见同样的问题输个命令行就好了,一到自己这就不行了,真囧,可能这就是编程的乐趣的,不在变态中爆发就在变态中获得快感