【问题标题】:Visual Studio Code - Node.js - Cannot find name '__dirname'Visual Studio 代码 - Node.js - 找不到名称“__dirname”
【发布时间】:2016-07-04 10:49:03
【问题描述】:

作为序言,我不是一个专业的编码员,但在我的老板发现我 10 年前在高中学习“网页设计”后,我还是被拉着为他建立了一个网站。那时静态网站还不错,而且 CSS 才刚刚开始显示它的潜力,但我离题了。

我现在正在 Visual Studio Code 上开发一个 Node.js 项目,但遇到了一个奇怪的异常。代码工作正常,但我想这只是好奇。无论如何,这是我的代码。

app.js

var express = require('express'),
app = express(),
bodyParser = require('body-parser'),
multer = require('multer'),
controller = require('./controllers');

//Sets the view engine to jade.
app.set('views', __dirname + '/frontend');
app.set('view engine', 'jade');

//sets up the development enviroment
if (app.get('env') === 'development') {
  app.locals.pretty = true;
  app.use(express.static(__dirname + '/build/public'))
  var build = require(__dirname + '/build.js');
  app.use('css/*', function(req, res, next){
    build.style();
    next();
  });
}

//Sets up the public directory to serve static files - This will be depricated quite soon...
//app.use(express.static(__dirname + '/public'));

//Initalizes site-wide local variables
//app.set('title', 'Halvorson Homes');

//Sets up body-parser to be able to read RESTful requests
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(multer({dest: 'tmp'}).fields());

//Load Controllers
app.use( '/' , controller);


//makes the app listen on port 3000
app.listen(3000, function() {
  console.log('Listening on port 3000...');
})

我的文件夹结构大致如下

  • 控制器
    • index.js
    • designs.js
  • 型号
    • designs.js
  • 前端
    • 常见
      • layout.jade
      • header.jade
      • footer.jade
      • client.js
      • style.less
    • 索引
      • index.jade
      • client.js
      • style.less
    • 设计
      • index.jade
      • client.js
      • style.less
  • 构建
    • tmp
    • srv
  • app.js
  • build.js
  • package.json

根据 VS Code 的内置调试器,第 8、14 和 15 行有异常。它们是我在整个项目中使用 __dirname 的唯一地方。这对我来说很烦人,因为我太完美主义了。是 Node、VS Code 还是其他?

【问题讨论】:

  • 请提供您的文件夹结构。您是否安装了类型并创建了 jsconfig?查看以下链接了解如何设置项目的详细信息。

标签: node.js macos visual-studio-code


【解决方案1】:

您收到的警告来自eslint extension。虽然它可能在 Node.JS 中有效,但它会警告您 __dirname,因为它并非在所有 JavaScript 环境(例如浏览器)中都有效。

要抑制警告,您需要直接在项目的根目录中创建一个.eslintrc 文件,并指示代码将在节点中运行,如下所示:

{
    "env": {
        "node": true
    }
}

您可以在此处查看用于为实际 vscode 代码库配置 eslint 的 .eslint 文件https://github.com/microsoft/vscode/blob/main/.eslintrc.json

【讨论】:

    【解决方案2】:

    聚会迟到了,但遇到了同样的问题。我的解决方法是添加节点类型,以便 VSCode 识别它们:

    转到终端视图,然后输入以下内容: npm install @types/node --save-dev

    然后点击Cmd + Shift + P(至少对于Mac)打开VSCode命令搜索对话框,然后选择Reload Window

    当它再次出现时,该错误和任何其他与 Node.JS 无法识别的内容相关的内容都应该消失。

    【讨论】:

      【解决方案3】:

      除了创建单独的.eslintrc 文件之外,您还可以将其添加到package.json 文件中。

      docs 状态:

      要在配置文件中指定环境,请使用 env 键并通过将每个环境设置为 true 来指定要启用的环境。例如,以下启用浏览器和 Node.js 环境

      {
          "name": "mypackage",
          "version": "0.0.1",
          "eslintConfig": {
              "env": {
                  "browser": true,
                  "node": true
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2016-10-03
        • 1970-01-01
        • 1970-01-01
        • 2016-04-02
        • 1970-01-01
        • 2017-09-23
        • 2019-01-20
        • 2014-01-06
        • 2022-10-21
        相关资源
        最近更新 更多