node.js - 使用 IISNode 将使用 Loopback.io 生成的 API 托管到 Azure

标签 node.js azure loopbackjs

所以我正在尝试一些未记录的事情。我在nodejs中使用loopback.io构建了一个简单的rest API,现在我想将其托管到azure网站。我 fork 了https://github.com/strongloop/loopback-getting-started并按照 https://azure.microsoft.com/en-us/documentation/articles/web-sites-nodejs-develop-deploy-mac/ 中所述的步骤进行操作

我能够推送文件并进行部署,但我不确定 IISNode 如何启动应用程序,因为 server.js 位于/server/server.js IISNode 无法在以下位置找到 server.js根目录并且不会创建 web.config。

我遇到了这个Point iisnode at server.js file nested in folder in an iis website但我无法让它在本地工作。这是我尝试过的

  • 在根级别创建一个包含内容的 server.js

require(__dirname + '\\server\\server.js')();

  • 注意到loopback以“node.”启动应用程序,我推断它使用packages.json中定义的主模块,因此我还将主模块位置从“/server/server.js”更改为“server.js”

{
  "name": "Sample",
  "version": "1.0.0",
  "main": "server.js",
  "scripts": {
    "pretest": "jshint ."
  },
  "dependencies": {
    "compression": "^1.0.3",
    "cors": "^2.5.2",
    "errorhandler": "^1.1.1",
    "loopback": "^2.14.0",
    "loopback-boot": "^2.6.5",
    "loopback-datasource-juggler": "^2.19.0",
    "serve-favicon": "^2.0.1"
  },
  "optionalDependencies": {
    "loopback-explorer": "^1.1.0"
  },
  "devDependencies": {
    "jshint": "^2.5.6"
  },
  "repository": {
    "type": "",
    "url": ""
  },
  "description": "Sample"
}

当我运行“node”时,这两个更改之后。我发现以下错误

C:\Users\anirudh\Documents\GitHub\Sample\node_modules\loopback\node_modules\express\lib\router\index.js:138
  debug('dispatching %s %s', req.method, req.url);
                                ^
TypeError: Cannot read property 'method' of undefined
    at Function.handle (C:\Users\anirudh\Documents\GitHub\Sample\node_modules\loopback\node_modules\express\lib\router\index.js:138:33)
    at EventEmitter.handle (C:\Users\anirudh\Documents\GitHub\Sample\node_modules\loopback\node_modules\express\lib\application.js:173:10)
    at app (C:\Users\anirudh\Documents\GitHub\Sample\node_modules\loopback\node_modules\express\lib\express.js:38:9)
    at Object.<anonymous> (C:\Users\anirudh\Documents\GitHub\Sample\server.js:1:105)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)

我不确定我错过了什么,任何帮助将不胜感激

最佳答案

我认为更好的方法是在项目的根目录中创建一个 .deployment 文件,该文件指向 Kudu(这是 Azure 用于获取已部署站点的 SCM(服务控制管理器),弄清楚它是什么,调整它,并使其在 IIS 上工作)到部署文件中的正确目录。

这很容易。只需在目录的根目录中创建一个名为 .deployment 的新文本文件并将其放入其中...

[config]
project = server

这将告诉部署脚本将服务器文件夹作为站点的根目录进行查找。 希望这对您有用!

关于node.js - 使用 IISNode 将使用 Loopback.io 生成的 API 托管到 Azure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31885248/

相关文章:

node.js - 无法解决 React 和 SOCKET.IO CORS 错误

node.js - Nodejs Redis HSET & HGET 插入到数据集错误

node.js - PM2 console.log 异步?

node.js - 无法识别语音错误 : Error occurred while processing 'audio.wav' . 文件中的 WAV header 无效,未找到 RIFF

ios - Strongloop环回ios swift sdk覆盖存储库错误

node.js - 使用 JWT 进行环回身份验证

node.js - Rest API Kafka 流

azure - 确保 Azure API 管理背后的 API 应用服务安全

Azure 云静态网站 - 使用 https 将自定义根域映射到 cdn

javascript - 如何继续实现混合移动应用理念?