英文:
Build generated from adapter-node is not working for official SvelteKit example
问题
我正在尝试官方的SvelteKit示例,网址是https://realworld.svelte.dev/。
它的代码托管在https://github.com/sveltejs/realworld
我尝试使用adapter-node
生成此项目的SSR构建。
我的svelte.config.js
如下:
import adapter from '@sveltejs/adapter-node';
export default {
kit: {
adapter: adapter({ out: '/tmp/realworld' })
}
};
我运行npm run build
来生成构建。
我运行node /tmp/realworld/index.js
但是遇到了错误:
alok@alok-HP-Laptop-14s-cf3xxx:~/tmp/test-svelte/realworld$ node /tmp/realworld/index.js
(node:256781) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
/tmp/realworld/index.js:1
import { handler } from './handler.js';
^^^^^^
SyntaxError: Cannot use import statement outside a module
at Object.compileFunction (node:vm:360:18)
at wrapSafe (node:internal/modules/cjs/loader:1088:15)
at Module._compile (node:internal/modules/cjs/loader:1123:27)
at Module._extensions..js (node:internal/modules/cjs/loader:1213:10)
at Module.load (node:internal/modules/cjs/loader:1037:32)
at Module._load (node:internal/modules/cjs/loader:878:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:23:47
Node.js v18.12.1
package.json
文件如下:
{
"name": "realworld.svelte.dev",
"version": "1.0.1-next.0",
"private": true,
"license": "MIT",
"type": "module",
"scripts": {
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"lint": "prettier --check --plugin-search-dir=. .",
"format": "prettier --write --plugin-search-dir=. ."
},
"devDependencies": {
"@sveltejs/adapter-node": "^1.0.0",
"@sveltejs/adapter-vercel": "^1.0.0",
"@sveltejs/kit": "^1.0.0",
"marked": "^4.2.1",
"prettier": "^2.7.1",
"prettier-plugin-svelte": "^2.8.0",
"svelte": "^3.54.0",
"typescript": "^4.9.4",
"vite": "^4.0.0"
}
}
我该如何使这个构建工作?
英文:
I am trying offical SvelteKit example https://realworld.svelte.dev/.
Its code is hosted at https://github.com/sveltejs/realworld
I tried to generate SSR build out of this project using adapter-node
My svelte.config.js
is
import adapter from '@sveltejs/adapter-node';
export default {
kit: {
adapter: adapter({ out: '/tmp/realworld' })
}
};
I am running npm run build
to generate build.
I am running node /tmp/realworld/index.js
but getting errors
alok@alok-HP-Laptop-14s-cf3xxx:~/tmp/test-svelte/realworld$ node /tmp/realworld/index.js
(node:256781) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
/tmp/realworld/index.js:1
import { handler } from './handler.js';
^^^^^^
SyntaxError: Cannot use import statement outside a module
at Object.compileFunction (node:vm:360:18)
at wrapSafe (node:internal/modules/cjs/loader:1088:15)
at Module._compile (node:internal/modules/cjs/loader:1123:27)
at Module._extensions..js (node:internal/modules/cjs/loader:1213:10)
at Module.load (node:internal/modules/cjs/loader:1037:32)
at Module._load (node:internal/modules/cjs/loader:878:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:23:47
Node.js v18.12.1
package.json
file is
{
"name": "realworld.svelte.dev",
"version": "1.0.1-next.0",
"private": true,
"license": "MIT",
"type": "module",
"scripts": {
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"lint": "prettier --check --plugin-search-dir=. .",
"format": "prettier --write --plugin-search-dir=. ."
},
"devDependencies": {
"@sveltejs/adapter-node": "^1.0.0",
"@sveltejs/adapter-vercel": "^1.0.0",
"@sveltejs/kit": "^1.0.0",
"marked": "^4.2.1",
"prettier": "^2.7.1",
"prettier-plugin-svelte": "^2.8.0",
"svelte": "^3.54.0",
"typescript": "^4.9.4",
"vite": "^4.0.0"
}
}
How can I make this build working?
答案1
得分: 1
根据https://github.com/sveltejs/realworld README所述,你需要在使用npm run build
构建项目之后,使用npm run preview
启动项目。
经过测试,本地环境(MacOS,Node 18.12.1)上正常运行,使用默认端口4173。
svelte.config.js
:
import adapter from '@sveltejs/adapter-node';
export default {
kit: {
adapter: adapter()
}
};
注意:此默认设置将在项目根目录的build
目录中定位你的构建文件。
编辑:
你可以选择构建到诸如/tmp/realworld
之类的位置,但请注意:
- 如果构建目录是绝对路径,该路径相对于你的文件系统的根目录
- 仍然需要使用
npm run preview
来启动项目
英文:
As stated by the https://github.com/sveltejs/realworld README, you need to start the project with npm run preview
after building it with npm run build
.
Tested, works locally on my machine (MacOS w/ Node 18.12.1), running on (default) port 4173.
svelte.config.js
:
import adapter from '@sveltejs/adapter-node';
export default {
kit: {
adapter: adapter()
}
};
Note: this default setup will locate your build in the build
directory at the root of your project.
Edit:
You can choose to build into a location such as /tmp/realworld
, but bear in mind that:
-
if the build directory is an absolute path, this path is relative to the root of your filesystem
-
you still need to launch with
npm run preview
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论