首先,我说说我有Azure Functions
C#的使用经验,但这是我第一次使用Node.js
on Azure Functions
。因此,这可能是一个新手问题,也可能根本不是一个适当的问题。
我已经使用Node.js开发了几个函数(版本:2.x),并将它们部署为Azure函数。除了对以下方面有依赖性的人以外,所有这些人都可以在本地和Azure上正常工作Firebase
在我的Function的相应文件夹上的index.js文件中,我声明了以下依赖关系:
// Firebase App (the core Firebase SDK) is always required and must be listed before other Firebase SDKs
var firebase = require("firebase/app");
// Add the Firebase products that you want to use
require("firebase/firestore");
然后,在package.json文件上,我有以下内容dependencies
(我仅粘贴了相关部分):
" ": {},
"devDependencies": {
"firebase": "7.6.1"
}
这在本地工作正常。我可以运行它并在本地对其进行调试,而不会出现问题,但是一旦将其部署到Azure上,无论是run
手动还是使用触发器(在本例中为Timer触发器),都会收到以下错误:
Result: Failure
Exception: Worker was unable to load function NotifySpToUpdateCapacity: 'Error: Failed to load gRPC binary module because it was not installed for the current system
Expected directory: node-v57-win32-ia32-unknown
Found: [node-v72-win32-x64-unknown]
This problem can often be fixed by running "npm rebuild" on the current system
Original error: Cannot find module 'D:\home\site\wwwroot\node_modules\grpc\src\node\extension_binary\node-v57-win32-ia32-unknown\grpc_node.node''
Stack: Error: Failed to load gRPC binary module because it was not installed for the current system
Expected directory: node-v57-win32-ia32-unknown
Found: [node-v72-win32-x64-unknown]
我的理解是无法找到该gRPC
模块。另外,我知道没有找到它,因为它不在预期目录中,而是...
我怎样才能解决这个问题?我需要更改或执行什么操作才能使其找到正确的目录或安装正确的依赖项?
此外,我在我的CI管道中添加了“ npm rebuild”,这在某些帖子中已被建议,但是在目前的情况下,它似乎无法解决任何问题。我还尝试将Node版本从〜10更改为〜8,但是我不确定我是否确实生效。我需要一些帮助,或者如果有人可以指出正确的方向。
我终于解决了我的问题。正如我在问题上所述,我对Node.js和npm并不熟悉。
具体的问题是这样的:
Expected directory: node-v57-win32-ia32-unknown
Found: [node-v72-win32-x64-unknown]
我已经尝试了太多东西。因此,我将尝试解决我认为确实导致此问题的那些问题。
首先,我必须说我的本地环境和Azure函数环境不同。因此,我使它们都具有节点版本8.10.0。这解决了发现的节点v57和节点v72之间的差异。
即使我将Azure环境配置为32,我也无法将Azure环境设置为32(因为错误中正在寻找的依赖项是“ node-v57-win32- ia32 -unknown ”)。
然后,我意识到我的Azure DevOps Pipeline可以有所作为。我没有在最初的问题上提到这一点,因为我迷失了Node.js和npm的东西,但我没有意识到。
因此,在我的管道中,我首先采取了安装相同节点版本的步骤。最后,我认为解决了问题的最后一步的是执行此操作的额外步骤:
npm rebuild --target=8.10.0 --target_arch=ia32 --update-binary
这样就可以找到“期望目录”:node-v57-win32-ia32-unknown。
我希望这可以帮助其他在同类问题上苦苦挣扎的人。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句