簡體   English   中英

在 node.js 中運行時未定義要求

[英]Require is not defined when running in node.js

我正在嘗試訪問 Strava API,但終端顯示

ReferenceError: require is not defined
at file:///Users/Me/directory/code.js:1:10
at ModuleJob.run (internal/modules/esm/module_job.js:152:23)
at async Loader.import (internal/modules/esm/loader.js:166:24)
at async Object.loadESM (internal/process/esm_loader.js:68:5)

當我嘗試在終端中從他們的網站運行代碼時。

我研究過它,它說這是因為我在瀏覽器上運行它,但我不認為我是。 我注釋掉了所有的代碼,所以唯一的一行是

var StravaApiV3 = require('strava_api_v3');

並且錯誤仍然不斷出現。 我只是用“cd 目錄”運行它,然后是 node code.js(為了清楚起見,已經更改了目錄和代碼的名稱),所以我不知道它為什么不起作用。 一行代碼是否以某種方式進入瀏覽器? 我正在使用 MacOS Big Sur 運行它,如果這有什么改變的話。

這是 Strava 在其網站上的代碼的 rest,如果您需要它:

    var StravaApiV3 = require('strava_api_v3');
var defaultClient = StravaApiV3.ApiClient.instance;

// Configure OAuth2 access token for authorization: strava_oauth
var strava_oauth = defaultClient.authentications['strava_oauth'];
strava_oauth.accessToken = "YOUR ACCESS TOKEN"

var api = new StravaApiV3.ActivitiesApi()

var id = 789; // {Long} The identifier of the activity.

var opts = { 
  'includeAllEfforts': true // {Boolean} To include all segments efforts.
};

var callback = function(error, data, response) {
  if (error) {
    console.error(error);
  } else {
    console.log('API called successfully. Returned data: ' + data);
  }
};
api.getActivityById(id, opts, callback);

TL;DR 即使我使用 node.js 運行此代碼,此代碼仍給我“未定義要求”錯誤

編輯:

- 當我在同一個目錄中運行一個虛擬要求(它只是 var fs = require('fs');)時,它仍然給出相同的錯誤

- 我的 package.json 的目錄是

    {
  "name": "stravatest",
  "version": "1.0.0",
  "description": "description",
  "main": "stravatest.js",
  "type":"module",
  "scripts": {
    "test": "test"
  },
  "repository": {
    "type": "git",
    "url": "url"
  },
  "keywords": [
    "keyword"
  ],
  "author": "author",
  "license": "ISC"
}

從 package.json 中刪除"type": "module" 這告訴 Node 你使用的是 ESM 而不是 CJS,但這不是你想要做的(除非你這樣做,在這種情況下你應該使用.mjs擴展名並使用import而不是require

但是你究竟是如何運行這個項目的? 您應該使用以下命令在 package.json 中添加“啟動”腳本: node stravatest.js 然后在您的終端中運行npm start它應該可以工作。

此外,正如Zac Anger所說,請記住刪除 package.json 中的"type": "module"行。 否則你會看到一個錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM