具有子目录的节点模块:"Error parsing triggers: Cannot find module 'ibm-watson'"
Node modules with sub-directories: "Error parsing triggers: Cannot find module 'ibm-watson'"
我有一个调用 IBM Watson 来获取令牌的 Firebase Cloud Function。我正在将它从旧的 username/password 身份验证更新为当前的 IAM 身份验证。
这是来自 IBM documentation 的代码:
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
我得到这个错误:
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
ibm-watson
安装在我的 /functions/node_modules
目录中:
我重新安装了 ibm-watson
,并且我 运行 npm install
在我的 functions
目录中。另外我 运行 npm-check
并更新了我所有的节点模块。
导致错误的具体行是:
const watson = require('ibm-watson');
当我注释掉该行时,函数部署没有错误。不幸的是,该函数没有 运行。 :-)
此行不会导致部署错误:
const { IamAuthenticator } = require('ibm-watson/auth');
我在同一 index.js
文件中的其他 Firebase Cloud Functions 中使用 IBM Watson。来自其他函数的这些行不会导致部署错误:
let TextToSpeechV1 = require('ibm-watson/text-to-speech/v1');
...
var LanguageTranslatorV3 = require('ibm-watson/language-translator/v3');
问题似乎是要求父目录ibm-watson
失败,但要求父目录的子目录有效。有什么建议吗?
这符合预期。如果您查看 ibm-watson
- https://github.com/watson-developer-cloud/node-sdk 的 GitHub 存储库 - 您会注意到没有示例需要顶级库。当您只需要引入一个小的子组件时,这会阻止您引入完整的库。
我有一个调用 IBM Watson 来获取令牌的 Firebase Cloud Function。我正在将它从旧的 username/password 身份验证更新为当前的 IAM 身份验证。
这是来自 IBM documentation 的代码:
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
我得到这个错误:
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
ibm-watson
安装在我的 /functions/node_modules
目录中:
我重新安装了 ibm-watson
,并且我 运行 npm install
在我的 functions
目录中。另外我 运行 npm-check
并更新了我所有的节点模块。
导致错误的具体行是:
const watson = require('ibm-watson');
当我注释掉该行时,函数部署没有错误。不幸的是,该函数没有 运行。 :-)
此行不会导致部署错误:
const { IamAuthenticator } = require('ibm-watson/auth');
我在同一 index.js
文件中的其他 Firebase Cloud Functions 中使用 IBM Watson。来自其他函数的这些行不会导致部署错误:
let TextToSpeechV1 = require('ibm-watson/text-to-speech/v1');
...
var LanguageTranslatorV3 = require('ibm-watson/language-translator/v3');
问题似乎是要求父目录ibm-watson
失败,但要求父目录的子目录有效。有什么建议吗?
这符合预期。如果您查看 ibm-watson
- https://github.com/watson-developer-cloud/node-sdk 的 GitHub 存储库 - 您会注意到没有示例需要顶级库。当您只需要引入一个小的子组件时,这会阻止您引入完整的库。