NodeJS 脚本仅从 Node.exe 运行才有效,而从 iisnode 运行则无效

NodeJS 脚本仅从 Node.exe 运行才有效,而从 iisnode 运行则无效

使用 iisnode 从 IIS 运行 NodeJS 脚本会导致路径和 404 问题,脚本会尝试在它们不存在的地方搜索文件,而直接从 Node 命令行运行它们时,它们可以完美运行。(例如,在根文件夹已经存在的情况下将其重新添加到 URL)

为此运行的网站没有特定配置,但使用 iisnode 作为 server.js 文件并使用 server.js 作为索引。IIS 端没有 URL 重写或任何其他内容,但在 Node 脚本端,使用了一些 URL 重写,我认为问题可能是 IIS 更改了重写。

我尝试使用此 iisnode 问题中的配置文件,因为我没有特定的配置,但没有成功(错误 500 而不是路径问题,无法从 IIS 管理器打开重写规则选项卡,直到配置文件恢复) https://github.com/tjanczuk/iisnode/issues/160#issuecomment-5606547

服务器运行 IIS 7.5、iisnode x64、NodeJS x64,脚本使用 process.env.PORT || 8080 获取要使用的端口(当它在 IIS 后面时使用 process.env.PORT,如果为空则使用 8080,用于在前面运行节点的开发人员)

测试了捆绑的每个 iisnode 示例,它们全部正常运行。

答案1

我遇到了和你同样的问题,而且它可以工作,但是你必须做一些修改:

  1. IIS 更改了 URL 格式,因此请使用以下内容代替正常的 url 和端口:
http.createServer(function (req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello, world! [helloworld sample]');
}`).listen(process.env.PORT);

`

  1. 在 js 文件夹中添加新的 web.config 文件,以便 IIS 可以意识到它应该将您的 js 文件发送到 IISNode 模块,而不是将其作为普通 js 文件处理

    在此处输入图片描述

相关内容