Node.js: 找不到模块'passport'。

8

我在开始探索Node.js时遗漏了一些基础知识。我正在尝试使用passportjs身份验证构建一个小应用程序。

我在app.ts中有以下代码:

import passport = require("passport");

以下是我的package.json文件内容:

{
    "name": "ftct",
    "version": "0.0.0",
    "description": "ftct",
    "main": "app.js",
    "author":
    {
        "name": "Mark.Norgate",
        "email": ""
    },
    "dependencies":
    {
        "express": "3.4.4",
        "jade": "*",
        "passport": "^0.3.2",
        "stylus": "*"
    }
}

然而,Visual Studio 2015 抱怨说:
Build: Cannot find module 'passport'.

我错过了什么?我已经阅读了一些passportjs的文档,但目前还没有发现可能导致问题的内容。


尝试使用var passport = require('passport') - nickdbush
@nickdbush 没有任何区别 - serlingpa
你执行了 npm install 吗? - mehmetseckin
你正在使用NTVS吗?(Node Tools for Visual Studio) - Jared Dykstra
1
@JaredDykstra 是的,我是... - serlingpa
显示剩余2条评论
7个回答

5
向package.json添加新模块并不会将依赖项实际包含在存储库中。您需要在将依赖项添加到package.json后运行npm install,或者您可以使用类似npm install <package name>的方法安装软件包。在这种情况下,您需要npm install passportnpm install将从npm下载源代码并将其放入./node_modules目录中。 npm安装文档

1
抱歉,我应该说过我已经运行了“npm install passport”。它在我的node_modules文件夹中。 - serlingpa

2

更改:

import passport = require("passport");

to:

var passport = require("passport");

1

我曾经遇到过类似的问题,即使passport已经安装并在package.json中正确保存,仍然会出现错误。

我的问题是,在package.json中有以下行:

"engines": {
    "node": ">=6.9.1"
  },

我将我的 package.json 与其他在线示例进行了比较,然后删除了那一行,它就可以工作了。


1
我曾经遇到同样的问题并尝试了上述示例,但最终只通过更改passport版本来解决它。现在我不知道为什么,但是我的应用程序在0.4.1版本下无法运行(即使要求该模块但没有使用它),为了解决这个问题,我只需要运行以下命令:npm install passport@0.4.0

1
删除 node_modules,删除 package-lock.json,然后运行 npm install,最后运行 npm install --save passport。

0

我只是想在这里留下这个提示,因为有些指南/教程往往会忘记提到passport-local或其他依赖项只是相互依赖,这意味着其他软件包也依赖于安装passport,因此请确保您实际上已经安装了passport,参见下面的安装命令。

npm i passport

然后你可以简单地运行

import passport from "passport"

0

安装类似于以下的软件包:

npm install @types/passport 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接