我在全球范围内安装了some-npm-module
,但在我require()
时遇到错误:
$ node
> const module = require('some-npm-module')
> import module from 'some-npm-module'
Error: Cannot find module 'some-npm-module'
at Function.Module._resolveFilename (module.js:470:15)
at Function.Module._load (module.js:418:25)
at Module.require (module.js:498:17)
at require (internal/module.js:20:19)
at repl:1:12
at realRunInThisContextScript (vm.js:22:35)
at sigintHandlersWrap (vm.js:98:12)
at ContextifyScript.Script.runInThisContext (vm.js:24:12)
at REPLServer.defaultEval (repl.js:313:29)
at bound (domain.js:280:14)
核心节点模块似乎没有问题。以下不会产生错误:
const http = require('http');
为什么会这样?我是否正确安装模块?
请注意,在这种情况下,我需要在终端中使用npm模块,而不是在某个项目中。
答案 0 :(得分:2)
如果您打算在命令行according to the documentation上调用模块,则只应全局安装模块:
如果你想将它用作命令行工具,比如grunt CLI,那么你想要全局安装它。另一方面,如果您想使用Node&#39's require等依赖于您自己模块的软件包,那么您需要在本地安装。
这是因为require()
没有查看全局模块目录,因此如果安装some-npm-module
,它就永远不会找到npm install some-npm-module
。
使用function isLoggedIn (req, res, next) {
if (req.isAuthenticated()) {
return next();
} else {
// variable holding previous path
req.session.returnPath = req.path;
res.redirect('/login');
}
}
.
.
.
app.get('/auth/<provider>/callback',
passport.authenticate(<provider>, {
failureRedirect : '/login'
}),
function(req, res) {
res.redirect(req.session.returnTo || "/");
delete req.session.returnTo;
});
在本地安装可以解决您的问题,并允许您从REPL中要求(只要您始终从相同目录运行REPL)。
答案 1 :(得分:-1)
全局安装npm模块后,要在当前项目/目录中使用它,只需链接它即可。
npm link module_name
它应该有用。