[英]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.