如何在Microsoft Azure网站

时间:2016-08-03 15:39:23

标签: node.js azure npm azure-web-sites npm-install

我的公司有私有范围的npm模块,即以@mycompanyscope/mymodule开头的模块。默认情况下,npm中的所有作用域模块都是私有的,因此您必须先在发布之前登录

npm login
Username:myusername
Password:**********
npm publish

范围模块必须具有name范围内的package.json属性:

{
  "name": "@mycompanyscope/mymodule"
}

并且必须删除private密钥。

一旦您登录,您的token文件夹中的.npmrc文件中就会显示$HOME,就像

//registry.npmjs.org/:_authToken=00000000-0000-0000-0000-000000000000
scope=mycompanyscope

此时,此计算机中的所有内容都已正确设置为publishinstall。如果您授予其他用户访问权限,他们可以在自己的计算机上执行npm login并从中获取令牌。

问题出在服务器端,具体取决于您的服务器。在Heroku上它应该按照here所解释的那样工作。

我的服务器环境是Azure网站。根据一些文档,你应该在部署阶段将你的.npmrc文件上传到Azure,如果我有办法获得该机器的令牌,那就太棒了。 如果我尝试登录Kudu PowerShell,事实是我无法登录,登录过程在某个时刻挂起:

Kudu Remote Execution Console
Type 'exit' then hit 'enter' to get a new powershell process.
Type 'cls' to clear the console

PS D:\home> npm login
Username: mycompany
Password: *********
Email: (this IS public) npm@mycompany.com

这样我就无法从这台机器生成任何令牌。那么如何在此授予访问权限以使npm install能够正确运行私有作用域模块?

[UPDATE] 感谢下面的回答,我能够将npm范围模块(@ mycompanyscope / myModule)部署到Azure网站,在项目根文件夹(.npmrc所在的位置)创建package.json文件,然后在那里写下npm login之后获得的令牌,并将registry添加到npmjs.org注册表中:

//registry.npmjs.org/:_authToken=00000000-0000-0000-0000-000000000000
scope=mycompanyscope
@mycompanyscope:registry=https://registry.npmjs.org/

1 个答案:

答案 0 :(得分:1)

您是否尝试在本地计算机上npm login私有npm注册表,在node.js应用程序中生成.npmrc文件,然后使用您的应用程序部署到Azure Web App。

有关详细信息,请参阅https://blog.maartenballiauw.be/post/2015/10/13/working-with-a-private-npm-registry-in-azure-web-apps.html

如有任何更新或进一步的问题,请随时告诉我们。