跳到主要内容
CNode

require.resolve捕获异常之后再install模块,然后require无法找到模块

问答
Nnolanctt发布于 9 年前最后回复 9 年前
123050

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)

N
nolanctt#19 年前

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

参与回复

登录后即可参与回复。登录