2017-08-18 108 views
0

當我在Azure上部署NodeJS應用程序時,一個是Node包被破壞。我得到的錯誤是:關於Azure包問題的NodeJS部署

Error: %1 is not a valid Win32 application. 

\\?\D:\home\site\wwwroot\node_modules\bcrypt\lib\binding\bcrypt_lib.node 
    at Error (native) 
    at Object.Module._extensions..node (module.js:597:18) 
    at Module.load (module.js:487:32) 
    at tryModuleLoad (module.js:446:12) 
    at Function.Module._load (module.js:438:3) 
    at Module.require (module.js:497:17) 
    at require (internal/module.js:20:19) 
    at Object.<anonymous> (D:\home\site\wwwroot\node_modules\bcrypt\bcrypt.js:6:16) 
    at Module._compile (module.js:570:32) 
    at Object.Module._extensions..js (module.js:579:10) 
    at Module.load (module.js:487:32) 
    at tryModuleLoad (module.js:446:12) 
    at Function.Module._load (module.js:438:3) 
    at Module.require (module.js:497:17) 
    at require (internal/module.js:20:19) 
    at Object.<anonymous> (D:\home\site\wwwroot\models\user.model.js:3:14) 

當我下載我部署的文件時,它甚至不能在本地工作了。我必須再次在本地重新安裝bcrypt軟件包才能正常工作。

有沒有人知道爲什麼會發生這種情況?

更新: 我找到了解決這個問題的方法。如果我在我的服務器上手動輸入「npm install bcrypt」,它可以工作...。 Offcourse每次部署後我都無法做到這一點......。

更新: 我檢查了修復之前和修復後的bcrypt軟件包安裝了哪個版本的Azure,它是相同的版本...。我不明白爲什麼會發生這種情況......。

的package.json

{ 
    "name": "AzureRest", 
    "version": "0.0.0", 
    "private": true, 
    "scripts": { 
    "start": "node ./bin/www", 
    "test": "node ./node_modules/mocha/bin/mocha" 
    }, 
    "dependencies": { 
    "node-pre-gyp": "~0.6.x", 
    "bcrypt": "~1.0.2", 
    "body-parser": "~1.16.0", 
    "chai": "^3.5.0", 
    "cookie-parser": "~1.4.3", 
    "cors": "^2.8.3", 
    "debug": "~2.6.0", 
    "ejs": "~2.5.5", 
    "express": "~4.14.1", 
    "jsonwebtoken": "^7.3.0", 
    "jwt-simple": "^0.5.1", 
    "mocha": "^3.2.0", 
    "mongoose": "~4.9.0", 
    "mongoose-pagination": "~1.0.0", 
    "morgan": "~1.7.0", 
    "passport": "^0.3.2", 
    "passport-jwt": "^2.2.1", 
    "serve-favicon": "~2.3.2", 
    "supertest": "^3.0.0", 
    "validator": "^7.1.0", 
    "slack-node": "^0.1.8" 
    } 
} 
+0

什麼是你本地的操作系統和什麼是天藍色的? –

+0

我的本地操作系統是Windows,我認爲我的API應用程序也可以在Windows上運行。奇怪的是,在我之前部署的人沒有這個問題。我不能問他,因爲他不在這裏了。 –

+0

node_module已經存在於您的部署代碼中,或者您在那裏使用npm install。 –

回答

0

請確保您有安裝使用前所有必要的組件所需。
您正在使用的節點包是這個我覺得
https://www.npmjs.com/package/bcrypt

退房此鏈接,不同的操作系統需要使用之前。

https://github.com/kelektiv/node.bcrypt.js/wiki/Installation-Instructions

,之後
確保您運行服務器npm install,因爲它是在服務器不使用node_module文件夾。

如果您在部署代碼中有node_module,請刪除並再次安裝npm install。它看起來像你在服務器中使用的node_module文件夾也是一樣。

+0

當我部署我的代碼時,它會在沒有node_module文件夾的情況下部署。 (它首先進入一個bitbucket git - > Jenkins得到觸發 - > Jenkins下載並將其下載到Azure應用程序,Azure自己再次安裝npm。 –

+0

你的package.json是怎麼樣的? – IamNguele

+0

我將添加這個在主要職位 –