require.resolve捕获异常之后再install模块,然后require无法找到模块
发布于 7 年前 作者 nolanctt 2046 次浏览 来自 问答

Version:v7.8.0 Platform:Darwin shankar.local 16.5.0 Darwin Kernel Version 16.5.0: Fri Mar 3 16:52:33 PST 2017; root:xnu-3789.51.2~3/RELEASE_X86_64 x86_64

const exec = require('child_process').spawnSync

try {
	require.resolve('lodash.assign')
} catch (e) {
	exec('npm', ['install', 'lodash.assign', '--save'], {
		stdio: 'inherit'
	})
}

//throw Cannot find module ‘lodash.assign’
require('lodash.assign')

假如不使用require.resolve,直接使用install安装再require没任何问题,但是只要用require.resolve执行一遍来检测模块是否存在,接下来再安装就报cannot find module错误。

1 回复

发现把require(‘lodash.assign’)改成require(‘lodash.assign/index.js’)就没问题了,有老司机可以帮忙解释下吗

回到顶部