2017-12-25 24 views
0

"func new로 작성된 Typescript 2.6.2 Azure 함수를 사용하여 VS 코드 및 노드 8.9.3에서 하늘색 도구를 로컬로 실행하고 있습니다. ". function.json에 "scriptFile": "index.ts",을 추가해야만 멀리까지 얻을 수있었습니다. 그렇지 않으면 주 스크립트를 찾을 수 없다는 불만이있었습니다. 다른 로컬에하늘 기능 로컬로 "시스템에서 TypeScriptCompiler.CompileAsync()를 수행하는 동안 지정된 파일을 찾을 수 없습니다"

{ 
    "id": "952c0946-bd72-49e7-9f25-c3a8ba8ca236", 
    "requestId": "954642f2-9b17-43a2-b26f-b63615360301", 
    "statusCode": 500, 
    "errorCode": 0, 
    "message": "Exception while executing function: Functions.CreateAccount -> The system cannot find the file specified", 
    "errorDetails": "Microsoft.Azure.WebJobs.Host.FunctionInvocationException : Exception while executing function: Functions.CreateAccount ---> System.ComponentModel.Win32Exception : The system cannot find the file specified 
     at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) 
     at System.Diagnostics.Process.Start() 
     at Microsoft.Azure.WebJobs.Script.Description.Node.TypeScript.TypeScriptCompiler.CompileAsync(String inputFile,TypeScriptCompilationOptions options) 
     at async Microsoft.Azure.WebJobs.Script.Description.Node.TypeScript.TypeScriptCompilation.CompileAsync(??) 
     at async Microsoft.Azure.WebJobs.Script.Description.Node.TypeScript.TypeScriptCompilation.CompileAsync(??) 
     at async Microsoft.Azure.WebJobs.Script.Description.Node.TypeScript.TypeScriptCompilationService.GetFunctionCompilationAsync(FunctionMetadata functionMetadata) 
     at async Microsoft.Azure.WebJobs.Script.Description.ConditionalJavaScriptCompilationService.GetFunctionCompilationAsync(FunctionMetadata functionMetadata) 
     at async Microsoft.Azure.WebJobs.Script.Description.NodeFunctionInvoker.CompileAndTraceAsync(LogTargets logTargets,Boolean throwOnCompilationError,Boolean suppressCompilationSummary) 
     at async Microsoft.Azure.WebJobs.Script.Description.NodeFunctionInvoker.CreateFunctionTarget(CancellationToken cancellationToken) 
     at async Microsoft.Azure.WebJobs.Script.Description.FunctionLoader`1.GetFunctionTargetAsync[T](Int32 attemptCount) 
     at async Microsoft.Azure.WebJobs.Script.Description.NodeFunctionInvoker.GetFunctionTargetAsync() 
     at async Microsoft.Azure.WebJobs.Script.Description.NodeFunctionInvoker.InvokeCore(Object[] parameters,FunctionInvocationContext context) 
     at async Microsoft.Azure.WebJobs.Script.Description.FunctionInvokerBase.Invoke(Object[] parameters) 
     at async Microsoft.Azure.WebJobs.Host.Executors.VoidTaskMethodInvoker`2.InvokeAsync[TReflected,TReturnType](TReflected instance,Object[] arguments) 
     at async Microsoft.Azure.WebJobs.Host.Executors.FunctionInvoker`2.InvokeAsync[TReflected,TReturnValue](Object instance,Object[] arguments) 
     at async Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.InvokeAsync(IFunctionInvoker invoker,ParameterHelper parameterHelper,CancellationTokenSource timeoutTokenSource,CancellationTokenSource functionCancellationTokenSource,Boolean throwOnTimeout,TimeSpan timerInterval,IFunctionInstance instance) 
     at async Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.ExecuteWithWatchersAsync(IFunctionInstance instance,ParameterHelper parameterHelper,TraceWriter traceWriter,CancellationTokenSource functionCancellationTokenSource) 
     at async Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.ExecuteWithLoggingAsync(??) 
     at async Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.ExecuteWithLoggingAsync(??) 
     End of inner exception 
     at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 
     at async Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.ExecuteWithLoggingAsync(??) 
     at async Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.TryExecuteAsync(IFunctionInstance functionInstance,CancellationToken cancellationToken) 
     at Microsoft.Azure.WebJobs.Host.Executors.ExceptionDispatchInfoDelayedException.Throw() 
     at async Microsoft.Azure.WebJobs.JobHost.CallAsync(??) 
     at async Microsoft.Azure.WebJobs.Script.ScriptHost.CallAsync(String method,Dictionary`2 arguments,CancellationToken cancellationToken) 
     at async Microsoft.Azure.WebJobs.Script.WebHost.WebScriptHostManager.HandleRequestAsync(FunctionDescriptor function,HttpRequestMessage request,CancellationToken cancellationToken) 
     at async Microsoft.Azure.WebJobs.Script.Host.FunctionRequestInvoker.ProcessRequestAsync(HttpRequestMessage request,CancellationToken cancellationToken,WebScriptHostManager scriptHostManager,WebHookReceiverManager webHookReceiverManager) 
     at async Microsoft.Azure.WebJobs.Script.WebHost.Controllers.FunctionsController.<>c__DisplayClass3_0.<ExecuteAsync>b__0(??) 
     at async Microsoft.Azure.WebJobs.Extensions.Http.HttpRequestManager.ProcessRequestAsync(HttpRequestMessage request,Func`3 processRequestHandler,CancellationToken cancellationToken) 
     at async Microsoft.Azure.WebJobs.Script.WebHost.Controllers.FunctionsController.ExecuteAsync(HttpControllerContext controllerContext,CancellationToken cancellationToken) 
     at async System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken) 
     at async System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken) 
     at async Microsoft.Azure.WebJobs.Script.WebHost.Handlers.WebScriptHostHandler.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken) 
     at async Microsoft.Azure.WebJobs.Script.WebHost.Handlers.SystemTraceHandler.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken) 
     at async System.Web.Http.HttpServer.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)" 
} 

타이프 라이터가 잘 작동 : 존재하지 않는 경로에 적절하게 404ing,하지만 난 우체부로에 게시하거나 브라우저에서 GET 때이 방출 -하지만 지금은 모든 등록에 성공하는 것처럼 보인다 소지품. 다른 사람이이 오류를 쳤습니까? 어떻게 해결할 수 있습니까?

답변

1

저는 Azure 함수가 Typescript 파일을 인식 할 수 있다고 생각하지 않습니다. 실행하기 전에 ts 코드를 tsc 명령을 통해 javascript로 컴파일해야 할 수도 있습니다. 이것에 대한 https://github.com/TsuyoshiUshio/TypeScriptCosmosSpike#compile-typescript

+0

감사 :

당신은 컴파일하고뿐만 아니라 그것을 실행하려면이 문서를 수행 할 수있다. 어쩌면 당신 말이 맞습니다. 그러나 타이프 스크립트가 작동해야한다는 몇 가지 징후가 있습니다 : 1) [알려진 이슈 문서] (https://github.com/Azure/azure-webjobs-sdk-script/wiki/Azure-Functions- 2.0 런타임에 대한 런타임 - 2.0 알려진 문제점 # 기능 - 갭)은 Typescript *가 아직 마이 그 레이션되지 않았다고 말합니다 *. 2) [이 기사] (https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local#publish)는 2.x 런타임에 옵트 인 *해야한다고 말합니다. 3) 예외의 스택 추적은 타이프 스크립트 (formcript) 컴파일을 포함하므로, 필요한 작업을 알고있는 것 같습니다. –

+0

아, 그리고 4) 하늘색 cli'func new'는 언어 선택으로 타이프 스크립트를 제공합니다. –

+0

함수 팀원은 여기에 있습니다. 함수는 미리보기에서 TypeScript를 지원하지만 더 이상 사용되지 않는 기능에 대해 논의했습니다. 자신 만의 tsconfig.json을 제공 할 수 없으므로 정확히 설정해야하는 번거 로움이 없습니다. 내 경험상, 미리 JS로 옮겨서 구성을 직접 제어하는 ​​것이 낫습니다. 전반적으로 나는 TS를 transpilating하는 것이 quirks 때문에 더 쉬워 진다고는 생각하지 않는다. –