我的node.js服务器没有'从另一个目录启动时无法工作
My node.js server doesn't work when launched from another directory
我正试图让node.js服务器在启动时启动。如果我在我的服务器文件夹中,并键入:
node server.js
它运行得很好,并启动同一文件夹中的python脚本。
但是,如果我从该目录之外或从init脚本运行它,比如:
node /home/servers/server.js
它启动并接收调用,但并没有按照预期运行python脚本
有人知道发生了什么事吗?我该怎么解决?谢谢
当您运行node
时,它引用来自调用的目录节点的所有文件系统调用,而不是app.js
所在的目录,因此如果您尝试require('./myfile')
,myfile.js
将需要位于您运行node
的目录中。
从不同的目录运行这个简单的脚本来查看它的运行情况(它运行ls
,从这里精心复制):
var sys = require('sys')
var exec = require('child_process').exec;
function puts(error, stdout, stderr) { sys.puts(stdout) }
exec("ls -la", puts);
至于Python问题,您应该开发一个从中调用app.js
的经验位置,并在定位脚本时使用它。
您也可以更改目录以确保您在需要的位置。只需在文件顶部添加以下内容:
__dirname
指向包含当前文件的目录。对于这个例子,我将假设以下回购结构:
repo/
src/
index.js
package.json
在index.js里面我会放:
const path = require('path');
process.chdir(path.join(__dirname));
相关文章:
- Skrollr.js在向上滚动时启动另一个动画
- 我们如何在jQuery Datatable调用结果中启动另一个jQuery插件,而不是页面就绪函数
- 如何在另一个原型事件完成后启动该原型事件
- 从另一个应用程序启动一个MobileFirst应用程序,并在活动启动后接收活动
- 外部 JavaScript 在另一个 JavaScript 中启动
- 如何从另一个函数启动一个 JavaScript 函数
- 培根.js当另一个事件流触发时重新启动缓冲
- 如果另一个仍在运行,请立即启动 ajax 调用
- 我的启动项目中的JS文件的另一个“断点当前不会被命中”错误
- 使用 node.js 启动另一个节点应用程序
- 如果为false,拖放会将我带到另一个网站,如果为true,则会重新启动动画
- 使用SimpleDialog作为另一个对话框的结果启动一个对话框
- 在第一个模态中打开另一个模态时,启动模态问题
- 重新启动音频时,我做另一个鼠标悬停
- 当另一个开关启动时,如何停止第一个开关的执行
- 从另一个JS函数中启动jQuery .datepicker
- 启动两个脚本的正确方法是什么:一个加载数据,另一个操作样式
- 在另一个函数完成后启动一个函数
- HTML和JSP—如何在不移动到另一个页面的情况下启动表单上的操作
- 我如何绘制一个维度vs另一个维度(使用dc.js, crossfilter.js) ?包括一个启动示例