TypeError:当我使用$作为jquery时,__ jquery2.default.ajax不是函数

我正在向我的Express服务器执行GET请求。 当我这样做时,我的服务器应该对Instagram API执行AJAX请求。 但是,我收到此错误:

 TypeError: _jquery2.default.ajax is not a function at /Users/bli1/Development/projects/bradford/server/server.js:53:7 at Layer.handle [as handle_request] (/Users/bli1/Development/projects/bradford/node_modules/express/lib/router/layer.js:95:5) at next (/Users/bli1/Development/projects/bradford/node_modules/express/lib/router/route.js:131:13) at Route.dispatch (/Users/bli1/Development/projects/bradford/node_modules/express/lib/router/route.js:112:3) at Layer.handle [as handle_request] (/Users/bli1/Development/projects/bradford/node_modules/express/lib/router/layer.js:95:5) at /Users/bli1/Development/projects/bradford/node_modules/express/lib/router/index.js:277:22 at Function.process_params (/Users/bli1/Development/projects/bradford/node_modules/express/lib/router/index.js:330:12) at next (/Users/bli1/Development/projects/bradford/node_modules/express/lib/router/index.js:271:10) at goNext (/Users/bli1/Development/projects/bradford/node_modules/webpack-dev-middleware/middleware.js:194:41) at processRequest (/Users/bli1/Development/projects/bradford/node_modules/webpack-dev-middleware/middleware.js:236:12) 

这是我的服务器代码的片段:

 import $ from 'jquery'; app.get("/instagram", (req, res) => { const instagramEndpoint = "https://api.instagram.com/v1/users/self/media/recent/?access_token="; const limit = 16; const user = "usertest"; const keys = require('./keys.json'); const accessToken = keys.instagram.accessToken; console.log('Hit Instagram API'); $.ajax({ method: 'GET', url: instagramEndpoint + accessToken[user], dataType: 'json', success: payload => { console.log(payload); return payload; }, error: payload => { console.log(payload); } }); }); 

我可以设法让jquery在我的快速路线中工作的唯一方法是使用jsdom来模拟DOM环境。

 app.get('/silos', (request, response) => { require('jsdom').env('', (err, window) => { const $ = require('jquery')(window); $.get('http://demo2632149.mockable.io/silos') .then((successResponse) => { response.send(successResponse); }); }); }); 

否则,如果您要做的就是进行REST调用,我强烈建议您使用axios 。

 import axios from 'axios'; app.get('/silos', (request, response) => { axios.get('http://demo2632149.mockable.io/silos') .then((successResponse) => { response.send(successResponse.data); }); }); 

我没有使用node.js所以在这里猜一点,但试试这个……

 import $ from 'jquery'; $(document).ready( function () { app.get("/instagram", (req, res) => { const instagramEndpoint = "https://api.instagram.com/v1/users/self/media/recent/?access_token="; const limit = 16; const user = "usertest"; const keys = require('./keys.json'); const accessToken = keys.instagram.accessToken; console.log('Hit Instagram API'); $.ajax({ method: 'GET', url: instagramEndpoint + accessToken[user], dataType: 'json', success: payload => { console.log(payload); return payload; }, error: payload => { console.log(payload); } }); }); });