找不到模块:无法解析“ readline”

时间:2019-06-12 08:49:04

标签: javascript node.js aws-sdk amazon-athena

我遇到了一个N​​PM软件包的Module not found: Can't resolve 'readline'错误,该软件包已安装并且似乎存在于node_modules文件夹中。错误的地方:

Place of the error

module "c:/Users/ts-lord/Desktop/server/cdr-ui/node_modules/athena-express/lib/index"
Could not find a declaration file for module 'athena-express'. 'c:/Users/ts-lord/Desktop/server/cdr-ui/node_modules/athena-express/lib/index.js' implicitly has an 'any' type.
  Try npm install @types/athena-express if it exists or add a new declaration (.d.ts) file containing declare module athena-express';ts(7016) 

尝试导入并需要该模块,但仍然存在相同的错误。使用“创建反应应用程序”来创建反应应用程序。还尝试了上面的一切。下面的代码尝试使用Athena查询s3。

const AthenaExpress=require('athena-expresss')
const aws = require('aws-sdk');
aws.config.update(awsCredentials);

        const athenaExpressConfig = {
          aws,
          s3: "s3://result-bucket-cdr/",
          getStats: true
        };

        const athenaExpress = new AthenaExpress(athenaExpressConfig);


        (async () => {
          let query = {
            sql: "SELECT * from result",
            db: "default",
            getStats: true 
          };

          try {
            let results = await athenaExpress.query(query);
            console.log(results);
          } catch (error) {
            console.log(error);
          }
        })();
      };

期望可以正常运行,但有错误

1 个答案:

答案 0 :(得分:0)

npm安装readline可以解决readline问题。这似乎是create-react-app的常见问题。主要是因为create-react-app适用于基于浏览器的前端应用程序,而athena-express是可以与Amazon Athena挂钩的前端的中间件。如果将athena-express安装在前端,将最终暴露出包含密钥和访问密钥的aws对象。

最好的选择是创建一个简单的node.js应用程序作为中间件(独立应用程序或AWS Lambda),用aws对象初始化athena-express,以便您的凭证安全。然后,您可以从浏览器react应用程序中调用athena-express作为API。