我在server.ts中做错了什么?
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const morgan = require('morgan');
const axios = require('axios');
console.log(axios);
...
字符串
节点版本
$ node -v
v12.9.1
型
package.json
{
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"start": "ts-node ./src/server/server.ts"
},
"dependencies": {
"axios": "^1.6.2",
"body-parser": "^1.20.2",
"core-js": "^3.8.3",
"eslint": "^4.6.0",
"node-fetch": "^2.0.0",
"nodemon": "^1.11.0",
"ts-node": "^10.9.1",
"vue": "^3.2.13",
"vue-class-component": "^8.0.0-0",
"vue-router": "^4.0.3",
"vuex": "^4.0.0"
},
"devDependencies": {
"@types/axios": "^0.14.0",
"@vue/cli-plugin-babel": "~5.0.0",
"@vue/cli-plugin-router": "~5.0.0",
"@vue/cli-plugin-typescript": "~5.0.0",
"@vue/cli-plugin-vuex": "~5.0.0",
"@vue/cli-service": "~5.0.0",
"cors": "^2.8.5",
"express": "^4.18.2",
"morgan": "^1.10.0",
"sass": "^1.32.7",
"sass-loader": "^12.0.0",
"typescript": "~4.5.5"
}
}
型
但是当我通过npm start
启动服务器时,
C:\dev-projects\testing\vue-server\node_modules\axios\index.js:1 import axios from './lib/axios.js';^
语法错误:Module._compile中的意外标识符(internal/modules/cjs/loader.js:872:18)at Module._extensions..js(internal/modules/cjs/loader.js:947:10)在Object.require.extensions. [as .js](C:\dev-projects\testing\vue-server\node_modules\ts-node\src\index.ts:1608:43)at Module.load(internal/modules/cjs/loader.js:790:32)at Function.Module._load(internal/modules/cjs/loader.js:703:12)at Module.require(internal/modules/cjs/loader.js:830:19)(internal/modules/cjs/helpers.js:68:18)。(C:\dev-projects\testing\vue-server\src\server\server.ts:5:15)at Module._compile(internal/modules/cjs/loader.js:936:30)at Module.m._compile(C:\dev-projects\testing\vue-server\node_modules\ts-node\src\index.ts:1618:23)
我有时会重新安装node_modules,尝试imporst axios,安装另一个版本的axios,甚至尝试做它的.js/.mjs文件。
.但它没有帮助..
1条答案
按热度按时间7xzttuei1#
axios的默认构建假设你使用的是ESM(JavaScript的原生模块格式),但你使用的是CommonJS(Node.js的旧模块格式)。你至少有两个选择:
1.切换到native modules(
import
/export
而不是require()
),或
1.参考axios documentation了解如何使用CommonJS加载axios,其中列出了各种CDN选项,并指出:
预构建CommonJS模块以直接导入require(如果您的模块打包器无法自动解析它们)
字符串
分别:
型
这是一个明显过时的Node.js版本,v12于2022年4月30日到期。当前的LTS是v20.10.0;最新的非LTS是v21.2.0。