Node.js 无法正确读取config.json(类型脚本,网页包)

Node.js 无法正确读取config.json(类型脚本,网页包),node.js,angular,typescript,webpack,angular2-universal,Node.js,Angular,Typescript,Webpack,Angular2 Universal,更新:问题已由解决 请注意,问题出现的原因和普通纯JavaScript方法无法解决的原因可能是server.ts正在使用TypeScript和Webpack。检查甘特的答案。并跟踪github 我正在用它作为起动器。我有一个config.json文件 当我在server.ts中读取配置时: 它在终端中显示: { "api": "123" } 但是,当我尝试读取server.ts中的config.api时: 它显示未定义的 这是我的文件夹结构的另一部分一样 当我启动应用程序时,我使用npm

更新:问题已由解决

请注意,问题出现的原因和普通纯JavaScript方法无法解决的原因可能是server.ts正在使用TypeScript和Webpack。检查甘特的答案。并跟踪github

我正在用它作为起动器。我有一个config.json文件

当我在server.ts中读取配置时:

它在终端中显示:

{
  "api": "123"
}
但是,当我尝试读取server.ts中的config.api时:

它显示未定义的

这是我的文件夹结构的另一部分一样

当我启动应用程序时,我使用npm start

这可能是什么原因造成的?谢谢更新:问题已由

请注意,问题出现的原因和普通纯JavaScript方法无法解决的原因可能是server.ts正在使用TypeScript和Webpack。检查甘特的答案。并跟踪github

我发现了问题:

import * as config from '../config.json';
// const config = require('../config.json'); also works


const json = JSON.parse(config);  // <- need this line
console.log(json.api);  // 123
更新:问题已由解决

请注意,问题出现的原因和普通纯JavaScript方法无法解决的原因可能是server.ts正在使用TypeScript和Webpack。检查甘特的答案。并跟踪github

我发现了问题:

import * as config from '../config.json';
// const config = require('../config.json'); also works


const json = JSON.parse(config);  // <- need this line
console.log(json.api);  // 123

您的配置文件由webpack内联,因此它遵循ES6模块规范,并以字符串形式返回JSON,而不是像您期望的那样从节点返回对象


您首先使用webpack构建服务器有什么原因吗?

您的配置文件是由webpack内联的,因此它遵循ES6模块规范,并以字符串形式返回JSON,而不是像您期望的那样从节点返回对象

您首先使用webpack构建服务器有什么原因吗

方法1错误,因为它与问题配置不匹配。所讨论的网页包配置使用json文件的原始加载程序,而这个答案使用的是json加载程序

使用方法2

这两种方法都使用nodejs+webpack进行了测试

方法1

方法2

方法1错误,因为它与问题配置不匹配。所讨论的网页包配置使用json文件的原始加载程序,而这个答案使用的是json加载程序

使用方法2

这两种方法都使用nodejs+webpack进行了测试

方法1

方法2



从“./config.json”;”导入配置;。如果它在节点中,您可以只需要它。const config=require./config.json.@SwarajGiri然后是console.logconfig;和console.logconfig.api;将显示undefined我在该存储库中没有看到任何名为config.json的文件。@SeeDart我将其用作启动程序,config.json是我自己的文件。您使用的是相对路径还是绝对路径?您可以共享您的文件结构吗?从“/config.json”导入配置;。如果它在节点中,您可以只需要它。const config=require./config.json.@SwarajGiri然后是console.logconfig;和console.logconfig.api;将显示undefined我在该存储库中没有看到任何名为config.json的文件。@SeeDart我将其用作启动程序,config.json是我自己的文件。您使用的是相对路径还是绝对路径?你能分享你的文件结构是什么样子的吗?我已经考虑过了,但在JS中不应该是这样的。也许是打字稿的问题。请将Typescript标记添加到您的问题中。并使标题更具描述性,例如,无法在TypeScript中解析JSON文件以避免更多的否决票。@amingilani哦,你明白了,我想这就是为什么会发生这个问题@amingilani看到我的回答,样板文件使用webpack编译服务器,typescript的模块加载器自动内联JSON,因此您得到了ES6行为。节点require从未实际使用过。@HongboMiao require有效,但需要使用字符串索引。你可以检查我的答案。我已经考虑过了,但在JS中不应该是这样。也许是打字稿的问题。请将Typescript标记添加到您的问题中。并使标题更具描述性,例如,无法在TypeScript中解析JSON文件以避免更多的否决票。@amingilani哦,你明白了,我想这就是为什么会发生这个问题@amingilani看到我的回答,样板文件使用webpack编译服务器,typescript的模块加载器自动内联JSON,因此您得到了ES6行为。节点require从未实际使用过。@HongboMiao require有效,但需要使用字符串索引。你可以检查我的答案。嗯,没有具体的原因,只是因为官方的angular/universal starter使用它,所以我直接用它来快速启动Hanks!我也知道console.logconfig;返回字符串而不是json!这就是为什么我尝试JSON.parse,然后works@HongboMiao这真是一件奇怪的事。它打破了关于在节点下运行的一些假设,并为一些不需要打包的东西增加了编译时间。我看看以后能不能提出一个问题。这是重点!也许你可以帮我制造一个问题来避免人们在将来遇到问题?嗯,没有具体的原因,只是因为OFI
角形/通用启动器使用它,所以我直接使用它来快速启动Hanks!我也知道console.logconfig;返回字符串而不是json!这就是为什么我尝试JSON.parse,然后works@HongboMiao这真是一件奇怪的事。它打破了关于在节点下运行的一些假设,并为一些不需要打包的东西增加了编译时间。我看看以后能不能提出一个问题。这是重点!也许您可以帮助在上创建一个问题,以避免人们在将来遇到问题?第一个问题不起作用,因为样板文件对JSON文件使用loader raw。@Gant您是对的,我没有克隆到repo,而是使用我自己的使用JSON loader的网页包配置。我的错。第一个不起作用,因为样板文件对JSON文件使用loader raw。@没错,我没有克隆到repo,而是使用我自己的网页配置,使用JSON loader。我的错。
import * as config from '../config.json';
// const config = require('../config.json');  will be same result
console.log(config.api);
my-app
  - config.json
  + src
    - server.ts
import * as config from '../config.json';
// const config = require('../config.json'); also works


const json = JSON.parse(config);  // <- need this line
console.log(json.api);  // 123
var config = require(__dirname + '/config.json');
console.log(config['api']);
var config = JSON.parse(fs.readFileSync(__dirname + '/config.json', 'utf8'));
console.log(config.api);