【发布时间】:2021-06-17 22:27:49
【问题描述】:
我想将package.json导入test.js,两个文件都在同一个目录中。
我试过require:
const jsonfile = require("./packages.json");
console.log({ jsonfile });
它抛出错误:
file:///home/.../test.js:1
const jsonfile = require("./packages.json");
^
ReferenceError: require is not defined
at file:///home/.../test.js:1:18
at ModuleJob.run (internal/modules/esm/module_job.js:145:37)
at async Loader.import (internal/modules/esm/loader.js:182:24)
at async Object.loadESM (internal/process/esm_loader.js:68:5)
这个错误意味着,就像它在浏览器中运行一样,没有require,我发现an answer有类似的消息。
我试过import:
import * as jsonfile from './packages.json';
console.log({ jsonfile });
internal/process/esm_loader.js:74
internalBinding('errors').triggerUncaughtException(
^
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/.../packages.json' imported from /home/.../test.js
at finalizeResolution (internal/modules/esm/resolve.js:271:11)
at moduleResolve (internal/modules/esm/resolve.js:694:10)
at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:784:11)
at Loader.resolve (internal/modules/esm/loader.js:100:40)
at Loader.getModuleJob (internal/modules/esm/loader.js:246:28)
at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:47:40)
at link (internal/modules/esm/module_job.js:46:36) {
code: 'ERR_MODULE_NOT_FOUND'
}
我尝试了更多?
- 文件名周围的单引号和双引号
- 带扩展名和不带扩展名的文件名。
- 带有标志--experimental-json-modules
-
adding
"type":"module到package.json(但这是针对节点 >= 13,但没有它我收到警告(node:7170) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.然后还有错误SyntaxError: Cannot use import statement outside a module)
我什至发现了将 JSON 文件加载为常规文本文件并将其解析为数据结构的建议,但这似乎是最后的手段......
这似乎是一项微不足道的任务,但我还没有找到如何将 JSON 数据导入 Javascript 变量的惯用方法。这里有什么问题?我应该如何导入它?
我使用节点 12.21.0
【问题讨论】:
-
你应该可以
requireNode 中的一个 json 文件,不知道出了什么问题。 -
Node 当前的 LTS 是 14,当前的 stable 是 15,所以至少你可能想更新到 14,但是如果你必须使用 12 : 你不是在写 ES 模块代码,你为什么要强迫 Node 像它一样运行你的代码?只需运行
node test.js(不是node test),您的代码就会运行良好。 -
require("./file.json");应该可以工作。这只是一个错字吗? packages.json 与 package.json? -
@simon.ro 是的,这里只是拼写错误,实际代码是
package.json -
@Mike'Pomax'Kamermans 感谢您指出旧版本,升级似乎是合理的。而且我总是使用扩展程序运行。
标签: javascript node.js json