在我正在合作的项目中,我们有两种选择,我们可以使用哪个模块系统:
require和导出模块,并使用module.exports和导出exports.foo.import,并使用ES6导出export使用一个优于另一个是否有任何性能优势?如果我们使用ES6模块而不是Node模块,还有什么我们应该知道的吗?
我正在实现https://github.com/moroshko/react-autosuggest的示例
重要的代码是这样的:
import React, { Component } from 'react';
import suburbs from 'json!../suburbs.json';
function getSuggestions(input, callback) {
const suggestions = suburbs
.filter(suburbObj => suburbMatchRegex.test(suburbObj.suburb))
.sort((suburbObj1, suburbObj2) =>
suburbObj1.suburb.toLowerCase().indexOf(lowercasedInput) -
suburbObj2.suburb.toLowerCase().indexOf(lowercasedInput)
)
.slice(0, 7)
.map(suburbObj => suburbObj.suburb);
// 'suggestions' will be an array of strings, e.g.:
// ['Mentone', 'Mill Park', 'Mordialloc']
setTimeout(() => callback(null, suggestions), 300);
}
Run Code Online (Sandbox Code Playgroud)
这个示例中的复制粘贴代码(有效)在我的项目中有错误:
Error: Cannot resolve module 'json' in /home/juanda/redux-pruebas/components
Run Code Online (Sandbox Code Playgroud)
如果我拿出前缀json!:
import suburbs from '../suburbs.json';
Run Code Online (Sandbox Code Playgroud)
这样我在编译时就没有错误(导入完成).但是当我执行它时出错:
Uncaught TypeError: _jsonfilesSuburbsJson2.default.filter is not a function
Run Code Online (Sandbox Code Playgroud)
如果我调试它,我可以看到郊区是一个objectc,而不是一个数组,所以没有定义过滤器功能. …
如何通过JSON文件解析检索其所有数据并在我的代码中使用它?
我已经尝试导入该文件并尝试使用控制台记录它,但它只是打印对象{}:
import jsonData from "./file.json";
console.log(jsonData);
Run Code Online (Sandbox Code Playgroud)
这是我的file.json看起来像:
[
{
"id": 1,
"gender": "Female",
"first_name": "Helen",
"last_name": "Nguyen",
"email": "hnguyen0@bloomberg.com",
"ip_address": "227.211.25.18"
}, {
"id": 2,
"gender": "Male",
"first_name": "Carlos",
"last_name": "Fowler",
"email": "cfowler1@gnu.org",
"ip_address": "214.248.201.11"
}
]
Run Code Online (Sandbox Code Playgroud)
我希望能够访问每个组件的名字和姓氏,并在网站上打印.
我找不到关于使用新的 ES 模块实现导入 JSON 文件的任何答案,我在 StackOverflow 上找到的所有答案都是针对使用 Babel 转译的代码,我想导入我的package.json文件:
import pkg from '../package.json';
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
(node:7863) ExperimentalWarning: The ESM module loader is experimental.
internal/modules/run_main.js:54
internalBinding('errors').triggerUncaughtException(
^
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".json" for /home/user/files/project/package.json imported from /home/user/files/project/version.js
at Loader.resolve [as _resolve] (internal/modules/esm/default_resolve.js:126:13)
at Loader.resolve (internal/modules/esm/loader.js:72:33)
at Loader.getModuleJob (internal/modules/esm/loader.js:156:40)
at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:42:40)
at link (internal/modules/esm/module_job.js:41:36) {
code: 'ERR_UNKNOWN_FILE_EXTENSION'
}
Run Code Online (Sandbox Code Playgroud)
我正在使用最新的Node.js 13.6.0,我是否只剩下使用fs模块读取文件的选项?
我在 json 文件中有一组对象。我正在尝试将此文件导入另一个文件,以便我可以在一个简单的反应项目中引用数据。
我尝试了导出默认值和命名导出的各种组合,但是 JSON 文件在我保存时总是抱怨。这是我想要实现的目标:
(File1.json)
[
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}
]
Run Code Online (Sandbox Code Playgroud)
文件2.js
[
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem …Run Code Online (Sandbox Code Playgroud)javascript ×5
json ×3
ecmascript-6 ×2
node.js ×2
reactjs ×2
babeljs ×1
es6-modules ×1
webpack ×1