Edu*_*ard 11 javascript node.js
我一直在使用 Node 版本12.3.4将其更新到 14.14.0 并开始收到很多我修复的问题。我唯一不明白的是问题
__dirname is not defined
Run Code Online (Sandbox Code Playgroud)
__dirname 是 Node 中的核心变量,据我所知,它是否在 Node 14 中删除了?
adl*_*z15 25
你是如何加载文件的?根据这个问题,如果您将其加载为不包含 __dirname 的 ECMAScript 模块,则会出现问题。
https://github.com/nodejs/help/issues/2907#issuecomment-671782092
按照下面的文档,您可能能够解决该问题:https : //nodejs.org/api/esm.html#esm_no_require_exports_module_exports_filename_dirname
import { fileURLToPath } from 'url';
import { dirname } from 'path';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
Run Code Online (Sandbox Code Playgroud)
小智 17
我之前的代码如下所示。
app.use(express.static(path.join(__dirname, 'public')));
Run Code Online (Sandbox Code Playgroud)
我得到了这个错误。
ReferenceError: __dirname 未在 ES 模块范围内定义
我通过在下面添加代码解决了这个问题。
import path from 'path';
const __dirname = path.resolve();
Run Code Online (Sandbox Code Playgroud)
通常不需要从“url”或“path”导入。
例如(使用 ESM)
fs.readFileSync(new URL('myfile.txt', import.meta.url));
Run Code Online (Sandbox Code Playgroud)
将从 JavaScript 文件的目录(而不是从当前工作目录)读取 myfile.txt。
从上面的链接得到这个
import express from 'express';
import path from 'path';
import { fileURLToPath } from 'url';
const app = express();
//we need to change up how __dirname is used for ES6 purposes
const __dirname = path.dirname(fileURLToPath(import.meta.url));
//now please load my static html and css files for my express app, from my /dist directory
app.use(express.static(path.join(__dirname ,'dist')));
//works...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7933 次 |
| 最近记录: |