我目前确实有一个在本地映像上使用asp.net core和jsreport的docker映像,它在运行linux容器的azure应用程序服务上不起作用。尝试任何渲染时都会引发以下错误:
An unhandled exception has occurred while executing the request.
jsreport.Local.JsReportBinaryException: Error rendering report: internal/modules/cjs/loader.js:58const internalModuleStat = function (f) { return require('fs').internalModuleStat(f); }; ^TypeError: require(...).internalModuleStat is not a function at internalModuleStat (internal/modules/cjs/loader.js:58:64) at stat (internal/modules/cjs/loader.js:137:18) at Function.Module._findPath (internal/modules/cjs/loader.js:667:16) at Function.Module._resolveFilename (internal/modules/cjs/loader.js:967:27) at Function.Module._load (internal/modules/cjs/loader.js:862:27) at Module.require (internal/modules/cjs/loader.js:1042:19) at Module._preloadModules (internal/modules/cjs/loader.js:1296:12) at loadPreloadModules (internal/bootstrap/pre_execution.js:449:5) at prepareMainThreadExecution (internal/bootstrap/pre_execution.js:73:3) at internal/bootstrap/pkg.js:7:1
at jsreport.Local.Internal.LocalUtilityReportingService.RenderAsync(String requestString, CancellationToken ct)
at jsreport.AspNetCore.JsReportMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
at Microsoft.AspNetCore.Localization.RequestLocalizationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)
我已将我的计算机与azure应用程序服务之间的差异追踪到以下环境变量,这在我的本地计算机上导致了相同的错误:(对于添加,此环境变量似乎是由azure自动添加的)
-e NODE_OPTIONS="--require /agents/node/build/src/Loader.js"
我没有找到任何关于此的有用信息,也没有找到在azure门户配置中删除或覆盖它的方法。一个可能的解决方法是在容器第一次启动时删除此环境变量,但这似乎不是一个好的长期解决方案。有没有办法强迫azure不包含这个环境变量,在本地忽略它,或者我在这里遗漏了什么?
更新:使用 Environment.SetEnvironmentVariable("NODE_OPTIONS", "");
一开始确实“解决”了这个错误,但仍然没有找到任何令人满意的解决方案。
更新2:我发现,这是由ApplicationInsights nodejs支持引起的。他们增加了 NODE_OPTIONS
环境变量(另请参见https://newreleases.io/project/github/microsoft/applicationinsights-node.js/release/1.7.0)尽快可靠地加载应用程序洞察。到目前为止,我还没有找到任何解决方案来解决如何禁用NodeJ的应用程序洞察,也没有找到导致错误的原因
暂无答案!
目前还没有任何答案,快来回答吧!