Azure「Web apps」服务:从package.json自动安装npm模块

13

我在Azure的“Web应用程序”容器中部署了一个node.js应用程序。我将“node_modules”文件夹添加到.gitignore中,并允许Azure从package.json安装模块。

然而,大多数模块不会自动安装,我必须打开实例的命令行,并使用“npm install”手动安装它们。

我正在使用node v0.12.0,这是我的package.json:

{
 "main": "server.js",
 "scripts": {
   "start": "node server.js"
 },
 "devDependencies": {
  "body-parser": "^1.12.4",
  "cors": "^2.6.1",
  "express": "*",
  "gulp": "^3.8.11",
  "gulp-jshint": "^1.11.0",
  "gulp-nodemon": "^2.0.3",
  "moment": "^2.10.3",
  "mongoose": "^4.0.3"
},
"engines": {
  "node": "0.12.0"
}
}

我如何在Azure Web应用程序中启用模块的自动安装,而不必在每次提交时推送"node_modules"文件夹?


2
这可能与应该重新命名为“dependencies”的devDependencies或无法构建的本地node模块(如mongoose)有关,因为Azure不支持本地的node.js模块。您能否粘贴Azure的安装日志? - Jonathan Muller
@Jonathan Muller 谢谢,我是 Azure 的新手,您是指部署日志吗? - ccot
1
是的,这样我们就可以看到哪个软件包破坏了构建。 - Jonathan Muller
@JonathanMuller 这就是问题所在,它已经成功部署了,直到我打开实例命令行才知道问题出在哪里。 - ccot
1
不需要提交node_modules!就像@Jonathan Muller所说:使用“依赖项(dependencies)”而不是“开发依赖项(devDependencies)”。 - marcel
1个回答

24
Azure 不会安装 devDependencies,如果你需要在生产环境中使用它们,那么应该将其改成dependencies
在你的 package.json 文件中,应将 devDependencies 改名为 dependencies
当你执行 npm install --save-dev 命令时,这种情况就会发生。
生产依赖项(用于运行): npm install --save
否则(构建工具、jshint 等): npm install --save-dev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接