如何在JavaScript Azure Functions中共享代码?

dou*_*ald 7 javascript azure mongoose node.js azure-functions

如何在Azure功能应用程序中的文件之间共享代码(例如,Mongo架构定义)?

我需要这样做,因为我的函数需要访问共享的mongo架构和模型,例如这个基本示例:

var blogPostSchema = new mongoose.Schema({
  id: 'number',
  title: 'string',
  date: 'date',
  content: 'string'
});

var BlogPost = mongoose.model('BlogPost', blogPostSchema);
Run Code Online (Sandbox Code Playgroud)

我试图在"watchDirectories": [ "Shared" ]我的host.json文件夹中添加一行,添加了一个index.js包含上述变量定义的行,但这似乎不适用于其他函数.

我只是得到一个Exception while executing function: Functions.GetBlogPosts. mscorlib: ReferenceError: BlogPost is not defined.

我也尝试过挖掘require.js文件,但似乎没有找到.可能是我错了路径.

有没有人有关于如何.js在天蓝色功能之间共享代码的示例或提示?

dou*_*ald 9

我通过执行以下步骤修复了此问题:

  1. 一行到根添加hosts.jsonwatch共享文件夹."watchDirectories": [ "Shared" ]
  2. 在共享文件夹中,添加了blogPostModel.js包含以下架构/模型定义和导出的文件

共享\ blogPostModel.js

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var blogPostSchema = new Schema({
    id: 'number',
    title: 'string',
    date: 'date',
    content: 'string'
});
module.exports = mongoose.model('BlogPost', blogPostSchema);
Run Code Online (Sandbox Code Playgroud)
  1. 在我的函数中require,共享文件具有以下路径: var blogPostModel = require('../Shared/blogPostModel.js');

然后,我可以find在每个单独的函数中建立连接并与模型进行交互.

该解决方案由以下SO帖子组成:

Node.js和共享文件中的Azure功能

编译Mongoose后无法覆盖模型