如何解决NodeJS Express-需要jpg时出现“语法:无效或意外的令牌”
我遇到了一个问题,我尝试要求提供一个.jpg图像。 在谷歌搜索时,我以为它与Jest有关,但是现在当我从一个干净的项目开始时,没有将Jest作为依赖项,我会遇到相同的错误。
可能是什么问题?
这是我要运行的文件
server.js
// Import express framework
const express = require('express')
// Import routes
const visionAiRouter = require('./routes/vision-ai-route')
// Setup default port
const PORT = process.env.PORT || 4000
// Create express app
const app = express()
// Vision AI Route
app.use('/ai',visionAiRouter)
// Implement route for errors
app.use((err,req,res,next) => {
console.error(err.stack)
res.status(500).send('Something broke!')
})
// Start express app
app.listen(PORT,function() {
console.log(`Server is running on: ${PORT}`)
})
vision-ai-route.js
// Import
const express = require('express')
const visionAi = require('../controllers/vision-ai-controller')
// Create express router
const router = express.Router()
router.get('/',visionAi.labelDetection)
// Export
module.exports = router
vision-ai-controller.js
// Assets
const cat = require('./../data/cat.jpg')
// Create controller for GET request to '/users/all'
exports.labelDetection = async (req,res) => {
// Imports the Google Cloud client library
const vision = require('@google-cloud/vision');
// Creates a client
const client = new vision.ImageAnnotatorClient();
// Performs label detection on the image file
const [result] = await client.labelDetection(cat);
const labels = result.labelAnnotations;
const stringify = JSON.stringify(labels);
await res.json(stringify)
}
package.json
{
"name": "test","version": "1.0.0","description": "","main": "server.js","dependencies": {
"@google-cloud/vision": "^2.1.1","express": "^4.17.1","nodemon": "^2.0.4"
},"devDependencies": {},"scripts": {
"start": "nodemon server.js"
},"author": "","license": "ISC"
}
Stacktrace
/Users/kod/Desktop/Code/Private/vision-ai/test/data/cat.jpg:1
����
^
SyntaxError: Invalid or unexpected token
at Module._compile (internal/modules/cjs/loader.js:721:23)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Module.require (internal/modules/cjs/loader.js:690:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object.<anonymous> (/Users/kod/Desktop/Code/Private/vision-ai/test/controllers/vision-ai-controller.js:3:13)
at Module._compile (internal/modules/cjs/loader.js:776:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
解决方法
您不需要非代码文件,因为require
是用来加载可执行代码的。正确的等效项是const cat = fs.readFileSync('./test/data/cat.jpg')
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。