Tuv*_*sid 13 node.js angularjs
我正在尝试使用在节点js中编写的服务器端检查angularjs应用程序,这是我在webmatrix运行时遇到的错误
处理请求时,iisnode遇到错误.
Run Code Online (Sandbox Code Playgroud)HRESULT: 0x2 HTTP status: 500 HTTP reason: Internal Server Error您收到此HTTP 200响应,因为system.webServer/iisnode/@devErrorsEnabled配置设置为"true".
除了node.exe进程的stdout和stderr的日志之外,请考虑使用调试和ETW跟踪来进一步诊断问题.
node.exe进程尚未向stderr写入任何信息,或者iisnode无法捕获此信息.经常的原因是iisnode模块无法创建日志文件来捕获node.exe的stdout和stderr输出.请检查运行node.js应用程序的IIS应用程序池的标识是否具有对node.js应用程序所在服务器上的目录的读写访问权限.或者,您可以通过将web.config的system.webServer/iisnode/@loggingEnabled元素设置为"false"来禁用日志记录.
有人知道如何解决它吗?
小智 9
您的应用程序池似乎没有足够的权限写入当前文件夹.
您可以编辑权限以授予IIS_IUSRS组对该文件夹的写入权限
进入高级设置菜单,在Process Model - > Identity下,将用户帐户更改为已具有写权限的用户.
当我尝试运行服务器时,我遇到了三个问题。我解决了这个问题:
我没有手动编写端口(例如 3000),而是添加了process.env.PORT. 它自己决定了它的端口。
授予写入日志文件夹的权限。我通过在 web.config 文件中设置 logginEnabled="false" 解决了这个问题。
删除 console.log() 命令。它将输出视为错误。
const express = require("express");
const app = express();
var path = require("path");
const port = process.env.PORT;
app.get("/", (req, res) => {
res.send({ appName: "animal-cdn" });
});
app.use(express.static(path.join(__dirname, "public")));
app.listen(port, () => {
// console.log(`Example app listening at http://localhost:${port}`);
});
Run Code Online (Sandbox Code Playgroud)
<configuration>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<!-- indicates that the server.js file is a node.js application
to be handled by the iisnode module -->
<iisnode
loggingEnabled="false"
debuggingEnabled="true"
/>
<handlers>
<add name="iisnode" path="index.js" verb="*" modules="iisnode"/>
</handlers>
<rewrite>
<rules>
<rule name="myapp">
<match url="/*" />
<action type="Rewrite" url="index.js" />
</rule>
<rule name="HTTPS Redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
看起来您的 iisnode 无法写入其日志文件,可能是因为它没有写入权限。如果您有权访问服务器,那么您可以在应用程序的文件夹中检查文件iisnode夹,这是 iisnode 默认尝试写入其日志的地方。
在您获得此日志信息之前,您会被卡住,因为您看到的 500 错误只会告诉您错误发生在服务器上的某处。您需要日志来为您提供继续操作所需的信息。
唯一的另一种选择是在本地运行整个过程并使用 node-inspector 之类的东西(我使用grunt-node-inspector)来调试 nodeJS 代码以查看发生了什么。
| 归档时间: |
|
| 查看次数: |
14394 次 |
| 最近记录: |