首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有子目录的节点模块:“解析触发器时出错:找不到模块'ibm-watson'”

带有子目录的节点模块:“解析触发器时出错:找不到模块'ibm-watson'”
EN

Stack Overflow用户
提问于 2020-03-12 02:36:41
回答 1查看 63关注 0票数 0

我有一个Firebase Cloud函数,它调用IBM Watson来获取令牌。我正在将它从旧的用户名/密码身份验证更新为当前的IAM身份验证。

下面是来自IBM documentation的代码。

代码语言:javascript
复制
const watson = require('ibm-watson');
const { IamAuthenticator } = require('ibm-watson/auth');

// to get an IAM Access Token
const authorization = new watson.AuthorizationV1({
  authenticator: new IamAuthenticator({ apikey: 'fakekey-1234' }),
});

authorization.getToken(function (err, token) {
  if (!token) {
    console.log('error: ', err);
  } else {
    // Use your token here
  }
});

当我运行firebase deploy --only functions时,我得到这个错误:

代码语言:javascript
复制
Error: Error parsing triggers: Cannot find module 'ibm-watson'
Require stack:
- /Users/TDK/LanguageTwo/functions/index.js
- /Users/TDK/.nvm/versions/node/v13.10.1/lib/node_modules/firebase-tools/lib/triggerParser.js

我的/functions/node_modules目录中安装了ibm-watson

我重新安装了ibm-watson,并且在我的functions目录中运行了npm install。另外,我运行了npm-check并更新了所有节点模块。

导致错误的特定行是:

代码语言:javascript
复制
const watson = require('ibm-watson');

当我注释掉这一行时,函数部署没有错误。不幸的是,该函数不能运行。:-)

该行不会导致部署错误:

代码语言:javascript
复制
const { IamAuthenticator } = require('ibm-watson/auth');

我在同一个index.js文件中的其他Firebase Cloud函数中使用IBM Watson。其他函数中的这些代码行不会导致部署错误:

代码语言:javascript
复制
let TextToSpeechV1 = require('ibm-watson/text-to-speech/v1');
...
var LanguageTranslatorV3 = require('ibm-watson/language-translator/v3');

问题似乎是需要父目录ibm-watson失败了,但是需要父目录的子目录是可行的。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-13 00:08:35

这和预期的一样。如果您查看ibm-watson - https://github.com/watson-developer-cloud/node-sdk的GitHub代码库,您会注意到没有需要顶层库的示例。当您只需要拉入一个小的子组件时,这会阻止您拉入整个库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60642525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档