3

VSO (Visual Studio Online)의 지속적인 전달/배포를 통해 배포되는 node.js API 응용 프로그램이 있습니다.Azure node.js API 응용 프로그램 - 런타임 중에 실패 함 (node.js 버전 문제 일 수 있음)

'express'와 같은 모듈을 가져올 때 응용 프로그램이 작동하지 않는다는 것을 발견했습니다. 하늘색 기계에 Kudo 콘솔을 통해 'express'를 설치했습니다. 하지만 그건 도움이되지 못했습니다.

내가 출력 콘솔에 표시되는 런타임 오류 : 내가 노드> 4.를 사용하는 제안되는이 article를 참조했다

Application has thrown an uncaught exception and is terminated: 
SyntaxError: Unexpected token ILLEGAL 
    at Module._compile (module.js:439:25) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 
    at Object.<anonymous> (D:\home\node_modules\tedious\lib\tedious.js:4:29) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 

주하지만 당신은 내 package.json에서 볼 수 있듯이

{ 
    "name": "my_API_Service", 
    "engines": { 
    "node": "6.11", 
    "npm": "1.1.65" 
    }, 
    "version": "1.0.0", 
    "description": "", 
    "main": "MyService.js", 
    "dependencies": { 
    "async": "^2.6.0", 
    "body-parser": "^1.18.2", 
    "express": "^4.16.2", 
    "http": "0.0.0", 
    "sequelize": "^4.28.6", 
    "swaggerize-express": "^4.0.5", 
    "swaggerize-ui": "^1.0.1", 
    "tedious": "^2.1.5" 
    }, 
    "devDependencies": { 
    "gulp": "^3.9.1", 
    "gulp-util": "^3.0.8" 
    }, 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "repository": { 
    "type": "git", 
    "url": "https://<my_api_service_url>" 
    }, 
    "author": "", 
    "license": "ISC" 

============= 휴일 ====== : 내가 명시 적> 6.

package.json은 다음과 같습니다 노드를 참조하고 ======== = 우선

I finally got my app running (very intuitively might i add) by configuring it on Windows OS (instead of Linux OS). I was really set on having it run on Linux, but it turned out to be a walk thru a mine field. 
+0

package.json 파일에 무엇이 있습니까? 또한 CD가 "npm run"을 사용하여 실행되도록하십시오. 그러면 모듈이 모두 설치됩니다. 내 빌드 정의에서 –

+0

첫 번째 단계는 "npm install"입니다. 대신 이것이 "npm run"이되어야한다는 뜻입니까? 아니면 "npm install -g npm-run"을 의미합니까? – AlvinfromDiaspar

답변

2

, 당신은 node_modules는 웹 응용 프로그램 서비스의 wwwroot 폴더에 있는지 여부를 확인할 수 있습니다. 이 문서를 기반으로 두 번째로

: Using Node.js Modules with Azure applications

애저 클라우드 서비스는 모든 모듈이 개발 환경에 설치 될 것으로 예상하고 node_modules 디렉토리는 배포 패키지의 일부로 를 포함 할 수 있습니다. 클라우드 서비스에서 package.json 또는 npm-shrinkwrap.json 파일 을 사용하여 모듈을 설치하는 경우 을 지원할 수 있습니다. 그러나이 구성에는 클라우드 서비스 프로젝트에서 사용되는 기본 스크립트 중 사용자 지정이 필요합니다. 이 환경을 구성하는 방법에 대한 예를 보려면 노드 모듈을 배포하지 않으려면 Azure Startup 작업을 사용하여 npm install을 실행하십시오.

그래서, 그것은 (웹팩을 통해 nodejs 응용 프로그램을 컴파일하고 푸른에 node_modules없이 출력 파일을 배포 테스트 node_modules에 패키지를 필요로 (노드 JS 빈 웹 응용 프로그램 템플릿), 그러나로드하지 못했습니다. 그것은 node_modules없이 현지에서 잘 작동 (노드 xx.js를 시작하려면 호출))

따라서 패키지를 배포 패키지에 포함하거나 위의 문서에서 Windows Azure 시작 작업을 사용하여 npm install을 실행하여 노드 모듈을 배포하지 않도록 할 수 있습니다.

+0

다른 옵션으로 꿀꺽 거리는 소리를 사용하여 node_module을 배포 위치에 복사/배포 할 수 있습니까? – AlvinfromDiaspar

+0

이제 모든 것을 wwwroot 위치에 복사하도록 작업을 구성했습니다. node_modules 폴더를 볼 수 있습니다. 그러나 여전히 동일한 스택 추적 오류가 표시됩니다. – AlvinfromDiaspar

+0

OneDrive에서 빌드 및 릴리스 로그를 공유 할 수 있습니까 (개인 정보 삭제)? –