gpt4 book ai didi

javascript - 尝试使用 Watch 方法时,Node FS 模块抛出 ENOENT 错误

转载 作者:行者123 更新时间:2023-12-03 01:10:02 27 4
gpt4 key购买 nike

我使用的是 macOS 10.13.4 和 Node 版本 8.11.4。我正在尝试遵循 tutsplus.com 上名为 Node From Scratch 的简单教程。 。第二个视频首先需要 FS 模块,然后调用文件的 watch 方法来监视文件的更改。

'use strict';

const fs = require( 'fs' );

fs.watch( 'stylesheet.css', () => console.log( 'File Has Been Updated' ) );

console.log( "Application Has Started And Is Listening For Changes" );

每当我尝试使用 Node 在终端中运行 js 文件时,都会收到错误

fs.js:1384
throw error;
^
Error: watch stylesheet.css ENOENT
at _errnoException (util.js:992:11)
at FSWatcher.start (fs.js:1382:19)
at Object.fs.watch (fs.js:1408:11)
at Object.<anonymous> (/Downloads/filewatcher.js:5:4)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Function.Module.runMain (module.js:693:10)

我似乎无法在网上找到任何关于为什么会发生这种情况的信息。任何人都可以帮忙吗?

最佳答案

正如评论所指出的,您在绝对路径与相对路径以及 Node 如何处理当前工作目录方面遇到了麻烦。

通过运行以下命令可以最好地证明问题的症结:

const path = require('path');
console.log(path.resolve('foo'));
console.log(path.resolve('./foo'));

在后一种情况下, Node 根据 Node 进程的当前工作目录解析相对路径。可以使用以下方式确认 cwd:

console.log(process.cwd());

Node 进程的cwd由您调用 Node 的位置决定。

例如,如果您有以下文件结构:

/
└──projects/
└──app/
├──js/
│ └──dep.js
├──index.js
└──test.txt

index.js 内容:

const fs = require('fs');
console.log(process.cwd());
console.log(fs.readFileSync('./test.txt'));
require('./js/dep.js');

dep.js 内容:

const fs = require('fs');
console.log(process.cwd());
console.log(fs.readFileSync('./test.txt'));

如果您导航到 /projects/app 并运行 node index.js,您将看到程序成功打印 cwd 和 test.txt 的内容两次。这演示了 cwd 如何在程序使用的不同源文件中保持一致。

如果您导航到 /app 并运行 node app/index.js,您会看到程序崩溃并出现 ENOENT 错误。这演示了从不同位置启动程序如何改变 cwd。

关于javascript - 尝试使用 Watch 方法时,Node FS 模块抛出 ENOENT 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52237435/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com